设置Apache Hadoop多节点集群

我们正在分享有关在基于Linux的机器(多节点)上安装Apache Hadoop的经验。 在这里,我们还将分享我们在各种故障排除方面的经验,并在将来进行更新。

用户创建和其他配置步骤–

  • 我们首先在每个集群中添加一个专用的Hadoop系统用户。


$ sudo addgroup hadoop
$ sudo adduser –ingroup hadoop hduser
  • 接下来,我们在所有群集上配置SSH(安全外壳)以启用安全的数据通信。
user@node1:~$ su – hduser
hduser@node1:~$ ssh-keygen -t rsa -P “”

输出将类似于以下内容:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/hduser/.ssh/id_rsa):
Created directory '/home/hduser/.ssh'.
Your identification has been saved in /home/hduser/.ssh/id_rsa.
Your public key has been saved in /home/hduser/.ssh/id_rsa.pub.
The key fingerprint is:
9b:82:ea:58:b4:e0:35:d7:ff:19:66:a6:ef:ae:0e:d2 hduser@ubuntu
.....
  • 接下来,我们需要使用此新创建的密钥启用对本地计算机的SSH访问:
hduser@node1:~$ cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys

在所有群集节点中重复上述步骤,并通过执行以下语句进行测试

hduser@node1:~$ ssh localhost

还需要执行此步骤,以将本地计算机的主机密钥指纹保存到hduser用户的known_hosts文件中。

接下来,我们需要编辑/ etc / hosts文件,在其中将集群中每个系统的IP和名称放入其中。

在我们的方案中,我们有一个主机(IP 192.168.0.100)和一个从机(IP 192.168.0.101)

$ sudo vi /etc/hosts

然后将这些值作为键值对放入主机文件中。

192.168.0.100 master
192.168.0.101 slave
  • 提供SSH访问

主节点上的hduser用户必须能够连接

    1. 在这种情况下,通过ssh master可以将其自身的用户帐户转移到master上,而不必是ssh localhost。
    2. 通过无密码SSH登录到从设备的hduser帐户。

因此,我们将hduser @ master的SSH公钥分配给它的所有从属(在我们的情况下,我们只有一个从属。如果您有更多从属,请执行以下语句更改计算机名称,即slave,slave1,slave2)。

hduser@master:~$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub hduser@slave

尝试通过将主机连接到主机,将主机连接到从机,然后检查是否一切正常。

配置Hadoop

  • 让我们编辑conf / masters (仅在masters节点中)

然后我们在文件中输入master

为此,我们告诉Hadoop在此计算机的多节点集群中启动Namenode和secondary NameNodes

主NameNodeJobTracker将始终在我们运行bin / start-dfs.shbin / start-mapred.sh的计算机上

  • 现在让我们使用以下命令编辑conf / slaves (仅在masters节点中)
master
slave

这意味着,我们也尝试在主机上运行datanode进程-namenode也在其中运行。 如果我们拥有更多的机器作为数据节点,我们可以让主服务器充当从服务器。

如果我们有更多的奴隶,那么每行添加一个主机,如下所示:

master
slave
slave2
slave3

等等…。

现在,让我们编辑两个重要文件( 集群的所有节点中):

  1. conf / core-site.xml
  2. conf / core-hdfs.xml

1)conf / core-site.xml

我们必须更改指定NameNode主机和端口的fs.default.parameter 。 (在我们的例子中,这是主机)

<property><name>fs.default.name</name>
<value>hdfs://master:54310</value>…..[Other XML Values]</property>

创建一个目录,Hadoop将在其中存储其数据–

$ mkdir /app/hadoop

我们必须确保该目录可由任何用户写入:

$ chmod 777 /app/hadoop

再次修改core-site.xml以添加以下属性:

<property>
<name>hadoop.tmp.dir</name>
<value>/app/hadoop</value>
</property>

2)conf / core-hdfs.xml

我们必须更改dfs.replication参数,该参数指定默认的块复制。 它定义了单个文件可用之前应复制到多少台计算机。 如果将其设置为大于可用从属节点数(更确切地说是DataNode数)的值,则将开始在日志中看到很多“(找到零目标,forbidden1.size = 1)”类型错误文件。

dfs.replication的默认值为3。但是,由于(在我们的方案中)只有两个节点可用,因此我们将dfs.replication设置为2。

<property>
<name>dfs.replication</name>
<value>2</value>
…..[Other XML Values]
</property>
  • 让我们通过NameNode 格式化 HDFS文件系统。

master上运行以下命令

bin/hadoop namenode -format
  • 让我们启动多节点集群:

运行命令:(在本例中,我们将在名为master的机器上运行)

bin/start-dfs.sh

检查Hadoop状态–

一切开始后,在所有节点上运行jps命令以查看一切运行良好与否。

在主节点上,所需的输出将是–

$ jps14799 NameNode
15314 Jps
14880 DataNode
14977 SecondaryNameNode

在从站中:

$ jps
15314 Jps
14880 DataNode

当然,进程ID会因计算机而异。

故障排除

Datanode可能无法在我们所有的节点中启动。 在这一点上,如果我们看到

logs/hadoop-hduser-datanode-.log

在受影响的节点上,以下情况除外:

java.io.IOException: Incompatible namespaceIDs

在这种情况下,我们需要执行以下操作–

  1. 停止整个集群,即MapReduce和HDFS层。
  2. 删除有问题的DataNode上的数据目录:该目录由conf / hdfs-site.xml中的 dfs.data.dir指定 在我们的例子中,相关目录是/ app / hadoop / tmp / dfs / data
  3. 重新格式化NameNode。 在格式化过程中,所有HDFS数据都会丢失。
  4. 重新启动集群。

要么

我们可以手动更新有问题的DataNode的namespaceID:

  1. 停止有问题的DataNode。
  2. 编辑$ {dfs.data.dir} / current / VERSION中的namespaceID的值,以匹配$ {dfs.name.dir} / current / VERSION中当前NameNode的对应值。
  3. 重新启动固定的DataNode。

Apache Hadoop(多节点群集)中运行Map-Reduce作业中 ,我们将按照apache hadoop示例分享有关Map Reduce Job Running的经验。

资源资源

  • http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-single-node-cluster/
  • http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-multi-node-cluster/
  • http://hadoop.apache.org/docs/current/

参考:通过Phlox Blog博客的JCG合作伙伴 Piyas De 设置Apache Hadoop Multi-Node Cluster 。

翻译自: https://www.javacodegeeks.com/2013/06/setting-up-apache-hadoop-multi-node-cluster.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/367694.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构(七)排序---直接插入排序(稳定)

经典排序算法----直接插入排序算法及其改进&#xff08;稳定&#xff09; 定义&#xff1a; 直接插入排序的基本操作是将一个记录插入到已经排好序的有序表中&#xff0c;从而得到一个新的&#xff0c;记录数加一的有序表。 实现思想 我们预留了一个哨兵&#xff0c;这里我们将…

CSS3中的透明属性opacity的用法实例

实例设置 div 元素的不透明级别&#xff1a;div{opacity:0.5;}完整例子&#xff1a;<!DOCTYPE html><html><head><style> div{background-color:red;opacity:0.5;filter:Alpha(opacity50); /* IE8 以及更早的浏览器 */}</style></head><…

java嵌套类型 无法隐藏外层类型_java内部类深入详解 内部类的分类 特点 定义方式 使用...

java内部类 内部类的分类 特点 定义方式 使用 外部类调用内部类 多层嵌套内部类 内部类访问外部类属性 接口中的内部类 内部类的继承 内部类的覆盖 局部内部类 成员内部类 静态内部类 匿名内部类内部类定义将一个类定义放到另一个类的内部,这就是内部类内部类与组合是完…

java.io.FileNotFoundException: generatorConfig.xml (系统找不到指定的文件。)

在使用MyBatis的逆向工程生成代码时&#xff0c;一直报错java.io.FileNotFoundException: generatorConfig.xml (系统找不到指定的文件。)&#xff0c;如图 文件结构如下&#xff1a; 代码如下&#xff1a; import java.io.File; import java.util.ArrayList; import java.util…

单例设计模式–鸟瞰

几天前&#xff0c;当我回到家乡时&#xff0c;我的一位来自同事的大三学生参加了一家跨国公司的采访&#xff0c;在采访过程中受了重伤。 我的意思是&#xff0c;由于面试小组提出的难题&#xff0c;他无法使面试合格。 当我回到班加罗尔时&#xff0c;他分享了他在技术面试中…

软件实践第一步——自我介绍

031602631&#xff1b;我是超爱美食的苏韫月&#xff1b;我的爱好是品尝所能接触到的所有甜点&#xff08;迟早&#xff01;&#xff09;&#xff1b;我最近新宠&#xff1a;拌面加扁肉&#xff08;京园淳百味&#xff09;&#xff1b;时隔一年我又回归心惊胆颤写博客文的日子。…

CSS3中使用translate() 方法实现元素位置的移动

translate() 方法通过 translate() 方法&#xff0c;元素从其当前位置移动&#xff0c;根据给定的 left&#xff08;x 坐标&#xff09; 和 top&#xff08;y 坐标&#xff09; 位置参数&#xff1a;实例div{transform: translate(50px,100px);-ms-transform: translate(50px,1…

java机器学习库_Amazon Deep Java Library——Java 机器学习工具箱

近年来&#xff0c;人们对机器学习的兴趣稳步增长。具体来说&#xff0c;现在&#xff0c;企业在各种各样的场景中使用机器学习进行图像识别。它在汽车工业、医疗保健、安全、零售、仓库、农场和农业的自动化产品跟踪、食品识别&#xff0c;甚至通过手机摄像头进行实时翻译等方…

阻抗计算

si9000也可以算 一般有点差异&#xff0c;板厂可以微调 加上滤油&#xff0c;实际阻抗会降低2-3欧 影响最大的是层厚 先选择最薄的芯板&#xff0c;注意差分线的阻抗匹配&#xff0c;间距越小&#xff0c;阻抗小&#xff0c; 转载于:https://www.cnblogs.com/IotI/p/8587277.h…

Spring Data Solr教程:动态查询

Solr通常被称为搜索服务器&#xff0c;我们可以在实现全文搜索功能时使用它。 但是&#xff0c;当我们实现从搜索表单获取其输入的搜索功能时&#xff0c;利用Solr的性能通常是明智的。 在这种情况下&#xff0c;执行的搜索查询取决于收到的输入。 这意味着查询参数的数量取决…

[cdq分治][树状数组] Jzoj P4419 hole

Description GFS打算去郊外建所别墅&#xff0c;享受生活&#xff0c;于是他耗费巨资买下了一块风水宝地&#xff0c;但令他震惊的是&#xff0c;一群DSJ对GFS的富贵生活深恶痛绝&#xff0c;决定打洞以搞破坏。现在我们简化一下这个问题&#xff0c;在这片土地上会按顺序发生一…

关于CSS3实现响应式布局的一些概念和术语

响应式布局也被应用到网站前端开发中&#xff0c;在国内这一词想必是非常火吧&#xff0c;那网站为什么要使用响应式布局呢&#xff1f;原因和其他创意性的生活用品基本上是一样的&#xff0c;处于对人力物力财力的节省和对生活富有诗意的一种追求。在人力物力和财力有限的情况…

AjaxSubmit+Servlet表单文件上传和下载

一、背景 前段时间公司要求我做一个上传和下载固件的页面&#xff0c;以备硬件产品在线升级&#xff0c;现在我把这部分功能抽取出来作为一个Demo Project给大家分享。 话不多说&#xff0c;先看项目演示 --> 演示 源码 二、源码 前端 js库&#xff1a;jquery-3.2.1.min.js…

番石榴的EventBus –简单的发布者/订阅者

在查看Google的Guava Libraries 版本10的最新版本时&#xff0c;我注意到EventBus的添加。 这是发布-订阅样式消息传递系统的轻量级实现。 这类似于JMS提供的发布-订阅模型&#xff0c;但是消息保留在应用程序内&#xff0c;而不是在外部广播。 EventBus允许您在程序中创建对象…

apscheduler -定时任务

https://apscheduler.readthedocs.io/en/latest/userguide.html 简单的使用方式为&#xff1a; from apscheduler.schedulers.blocking import BlockingScheduler sched BlockingScheduler()sched.add_job(ff_task,cron,hour0-1,8-23,minute28)sched.add_job(avor_task, cron,…

java迭代器 异常_java迭代器失效 | 学步园

今天在测试代码的时候出现一个异常ConcurrentModificationException&#xff0c;该异常网上很多解决方案以及解释&#xff0c;但我还是再记录一遍吧。代码抽象出来是这样的&#xff1a;import java.util.ArrayList;import java.util.List;public class Test {public static voi…

CSS3中的圆角边框属性详解(border-radius属性)

实例向 div 元素添加圆角边框&#xff1a;div{border:2px solid;border-radius:25px;}页面底部有更多实例。浏览器支持IEFirefoxChromeSafariOperaIE9 、Firefox 4 、Chrome、Safari 5 以及 Opera 支持 border-radius 属性。定义和用法border-radius 属性是一个简写属性&#x…

83.const与类

const常量对象,无法改变数据,只能引用尾部带const方法类的成员如果是const,可以默认初始化,也可以构造的初始化,不可在构造函数内部初始化类中的const成员,无法直接修改,可以间接修改类的成员函数const三种情形:1.返回值const,2.返回常量,3.参数const,可读不可写,尾部const,常量…

使用Apache CXF开发RESTful服务

介绍 如您所知&#xff0c;有两种开发Web服务的方法 简单对象访问协议&#xff08;SOAP&#xff09; 代表性状态转移&#xff08;REST&#xff09; 在继续学习如何使用Apache CXF创建基于REST的Web服务之前&#xff0c;我们将了解什么是REST。 REST不是一项技术&#xff0c;…

CTU 2017 J - Punching Power (二分图匹配)

题意&#xff1a; 公园管理层最终决定在公园的各个战略位置安装一些流行的拳击机。实际上&#xff0c;为了弥补以前缺少的机器&#xff0c;他们决定安装尽可能多的机器。令人惊讶的是&#xff0c;公园不会被新机器堵塞&#xff0c;因为对于机器的位置存在一些非常严重的法律限制…