haddop从单机改为集群

Host配置

vim /etc/hosts

如果没有足够的权限,可以切换用户为root。 三台机器的内容统一增加以下host配置: 可以通过hostname来修改服务器名称为master、slave1、slave2

192.168.71.242 master
192.168.71.212 slave1
192.168.71.213 slave2

配置SSH无密码登录

设置ssh免密码登录

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

chmod 0600 ~/.ssh/

authorized_keys

具体可参照点击

修改vim mapred-site.xml

<configuration>

<property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
</property>

</configuration>

修改/hadoop-2.8.2/etc/hadoop/slaves

将原来的localhost删除,改成如下内容

vim /hadoop-2.8.2/etc/hadoop/slaves

slave1
slave2

最后,将整个hadoop-2.8.2文件夹及其子文件夹使用scp复制到slave1和slave2的相同目录中:

scp -r /usr/local/hadoop-2.8.2 root@slave1:/usr/local

scp -r /usr/local/hadoop-2.8.2 root@slave2:/usr/local

 

 

四、运行Hadoop

4.1 格式化NameNode

执行命令:
hadoop namenode -format
执行过程如下图:

最后的执行结果如下图:

4.2 启动NameNode

执行命令如下:
/data/hadoop-2.7.1/sbin/hadoop-daemon.sh start namenode

 

在Master上执行jps命令,得到如下结果:

4.3 启动DataNode
执行命令如下:
/data/hadoop-2.7.1/sbin/hadoop-daemons.sh start datanode
执行结果如下:

master

slave1

slave2

说明Slave1和Slave2上的DataNode运行正常。
以上启动NameNode和DataNode的方式,可以用start-dfs.sh脚本替代:
/data/hadoop-2.7.1/sbin/start-all.sh
4.4 运行YARN
运行Yarn也有与运行HDFS类似的方式。启动ResourceManager使用以下命令:
以上方式我们就不赘述了,来看看使用start-yarn.sh的简洁的启动方式:
在Master上执行jps:

说明ResourceManager运行正常。

在两台Slave上执行jps,也会看到NodeManager运行正常,如下图:
 
4.5 查看集群是否启动成功:

  jps

  Master显示:

  SecondaryNameNode

  ResourceManager

  NameNode

  

  Slave显示:

  NodeManager

  DataNode


五、测试hadoop

5.1 测试HDFS

最后测试下亲手搭建的Hadoop集群是否执行正常,测试的命令如下图所示:

5.2 查看集群状态

  /data/hadoop-2.7.1/bin/hdfs dfsadmin -report

  

5.3 测试YARN

可以访问YARN的管理界面,验证YARN,如下图所示:

5.4 测试mapreduce

不想编写mapreduce代码。幸好Hadoop安装包里提供了现成的例子,在Hadoop的share/hadoop/mapreduce目录下。运行例子:

 5.5 测试查看HDFS:

http://115.29.51.97:50070/dfshealth.html#tab-overview

 

六、配置运行Hadoop中遇见的问题

6.1 JAVA_HOME未设置?
启动的时候报:

则需要/data/hadoop-2.7.1/etc/hadoop/hadoop-env.sh,添加JAVA_HOME路径

6.2 ncompatible clusterIDs

由于配置Hadoop集群不是一蹴而就的,所以往往伴随着配置——>运行——>。。。——>配置——>运行的过程,所以DataNode启动不了时,往往会在查看日志后,发现以下问题:


此问题是由于每次启动Hadoop集群时,会有不同的集群ID,所以需要清理启动失败节点上data目录(比如我创建的/home/jiaan.gja/hdfs/data)中的数据。

6.3 NativeCodeLoader的警告

在测试Hadoop时,细心的人可能看到截图中的警告信息:

 

posted @ 2017-11-10 17:35  daviddu  阅读(482)  评论(0)    收藏  举报