博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hadoop 2.0安装以及不停集群加datanode
阅读量:6198 次
发布时间:2019-06-21

本文共 5810 字,大约阅读时间需要 19 分钟。

Hadoop2.0是对Hadoop1.0全面升级,针对Namenode单点问题,提出了HDFS Federation,让多个NameNode分管不同的目录进而实现访问隔离和横向扩展。诞生了通用的计算框架YARN,YARN系统的引入使得计算框架进入了平台化时代,从云计算分层概念上讲,YARN可看做PAAS层,很多计算框架或者应用程序不再基于传统的操作系统开发,而是基于YARN这个云操作系统。典型的代表是DAG计算框架Tez,当然还有一些其他知名的自运行的计算集群系统也在YARN上有开源版本,比如Storm-on-yarn,Spark-on-yarn。我们先安装一个Hadoop2.0环境,作为一切的开始。

 

单机环境中,Hadoop有伪分布式模式,即“单点集群”,在该模式下,所有的守护进程均会运行在单个节点上。

伪分布式模式安装好了之后,继续动态加datanode,然后就是完全分布式的hadoop

希望了解hadoop2.0的改进以及设计的亮点可以看这篇博文,

本文的hadoop版本是2.2.0,源码以及编译包的获取地址:http://hadoop.apache.org/releases.html

[root@localhost hadoop]# pwd/root/hadoop[root@localhost hadoop]# lshadoop-2.2.0  hadoop-2.2.0.tar.gz[root@localhost hadoop]# cd hadoop-2.2.0[root@localhost hadoop-2.2.0]# lsbin etc include lib libexec LICENSE.txt logs NOTICE.txt README.txt sbin share

 

步骤1 修改配置文件

修改Hadoop配置文件 ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh,这个根据实际情况修改,不过java7好像不太兼容,我这边使用java6

export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64

然后修改conf目录下的mapred-site.xml,core-site.xml,yarn-site.xml和hdfs-site.xml四个文件,省略了最外围的<configuration></configuration>

mapreduce.framework.name
yarn
fs.default.name
hdfs://192.168.12.67:8020
hadoop.tmp.dir
/hadoop-tmp
yarn.nodemanager.aux-services
mapreduce_shuffle
dfs.replication
1

 

修改/etc/hosts,把本机hostname从原来的127.0.0.1修改为本机ip

192.168.12.67 localhost

修改${HADOOP_HOME}/etc/hadoop/slaves

192.168.12.67

 

步骤2 设置免密码登录

#生成免密码公密钥对,然后把公钥加入自己的授权文件中,完成本机对本机的免密码登录ssh-keygen -t rsacd ~/.ssh/cat id_ras.pub >> authorized_keys

 

步骤3 启动Hadoop

格式化HDFS

 

./bin/hadoop namenode -format

 

启动HDFS

cd $HADOOP_HOME./sbin/start-dfs.sh

启动YARN

cd $HADOOP_HOME./sbin/start-yarn.sh

 

通过以下URL可查看YARN是否启动成功: http://192.168.12.67:8088/

 jps可以看到运行的进程

[root@localhost hadoop-2.2.0]# jps21454 SecondaryNameNode31987 Jps21302 DataNode21718 NodeManager21191 NameNode21623 ResourceManager

 

 

可以把hadoop的执行脚本加入PATH,这样方便以后直接调用hadoop脚本,具体就是修改/etc/profile文件,然后source /etc/profile生效

export PATH=$PATH:/root/hadoop/hadoop-2.2.0/bin

运行下hadoop脚本,就可以看到hdfs的文件系统了

[root@localhost hadoop-2.2.0]# hadoop fs -ls

hadoop提供了一个跑在yarn上的示例,可以运行

hadoop jar share/hadoop/yarn/hadoop-yarn-applications-distributedshell-2.2.0.jar org.apache.hadoop.yarn.applications.distributedshell.Client --jar share/hadoop/yarn/hadoop-yarn-applications-distributedshell-2.2.0.jar --shell_command ls --num_containers 10 --container_memory 350 --master_memory 350 --priority 10

 显示hadoo上正在运行的作业

hadoop job -list

 

完全分布式安装,动态加datanode机器

伪分布式安装完成,下面试试完全分布式安装(就是动态加datanode场景)、

这里我随便找了两台机器,把新加两台机器hostname dns解析加入namenode机器的/etc/hosts中,所有新加的机器的/etc/hosts上都要同步这个配置。否则有datanode无法连接到namenode exception

192.168.1.57 yhserver 192.168.24.33 rhel6

修改${HADOOP_HOME}/etc/hadoop/slaves,加入新机器两台

192.168.1.57192.168.24.33

注意,我在加加机器的时候规范了下hdfs-site.xml配置文件,把namenode文件和datanode文件,指定相应的目录,当然这样改了之后,就需要重新做namenode格式化的操作了。如果一开始就规范好了,就可以不停下namenode,直接加datanode了。默认没有配置,就是在hadoop.tmp目录下,各建立dfs name目录保存相应文件。

dfs.namenode.name.dir
/hadoop/name
dfs.datanode.data.dir
/hadoop/dfs

然后往新加的两台机器上,同步hadoop工程以及配置文件,然后设置免密码登录新加的两台机器,然后新加的机器上,各自单独执行

./sbin/hadoop-daemon.sh start datanode

然后就可以看到新加的两个datanode生效了

 

问题汇总

error: org.apache.hadoop.hdfs.server.protocol.DisallowedDatanodeException: Datanode denied communication with namenode

datanode无法连接到namenode,是因为没有在所有机器的/etc/hosts,配置好hostname ip对应关系。配置好了,重启就可以。

 

FATAL org.apache.hadoop.yarn.server.nodemanager.containermanager.AuxServices: Failed to initialize mapreduce_shufflejava.lang.RuntimeException: No class defiend for mapreduce_shuffle        at org.apache.hadoop.yarn.server.nodemanager.containermanager.AuxServices.init(AuxServices.java:94)        at org.apache.hadoop.yarn.service.CompositeService.init(CompositeService.java:58)        at org.apache.hadoop.yarn.server.nodemanager.containermanager.ContainerManagerImpl.init(ContainerManagerImpl.java:181)        at org.apache.hadoop.yarn.service.CompositeService.init(CompositeService.java:58)        at org.apache.hadoop.yarn.server.nodemanager.NodeManager.init(NodeManager.java:185)        at org.apache.hadoop.yarn.server.nodemanager.NodeManager.initAndStartNodeManager(NodeManager.java:328)        at org.apache.hadoop.yarn.server.nodemanager.NodeManager.main(NodeManager.java:351) FATAL org.apache.hadoop.yarn.server.nodemanager.NodeManager: Error starting NodeManagerjava.lang.RuntimeException: No class defiend for mapreduce_shuffle        at org.apache.hadoop.yarn.server.nodemanager.containermanager.AuxServices.init(AuxServices.java:94)        at org.apache.hadoop.yarn.service.CompositeService.init(CompositeService.java:58)        at org.apache.hadoop.yarn.server.nodemanager.containermanager.ContainerManagerImpl.init(ContainerManagerImpl.java:181)        at org.apache.hadoop.yarn.service.CompositeService.init(CompositeService.java:58)        at org.apache.hadoop.yarn.server.nodemanager.NodeManager.init(NodeManager.java:185)        at org.apache.hadoop.yarn.server.nodemanager.NodeManager.initAndStartNodeManager(NodeManager.java:328)        at org.apache.hadoop.yarn.server.nodemanager.NodeManager.main(NodeManager.java:351)

不同版本间参数名称不一样,修改yarn-site.xml文件

<property>

<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>mapreduce_shuffle</value>
</property>

 

 

 

参考

《Hadoop技术内幕-深入解析YARN架构设计与实现原理》

DAG计算框架Tez:http://tez.incubator.apache.org/

"Storm On YARN" Yahoo!开源: https://github.com/yahoo/storm-yarn

"Spark On YARN":http://spark.apache.org/docs/0.9.0/running-on-yarn.html

 

 

转载地址:http://kdjca.baihongyu.com/

你可能感兴趣的文章
卡尔曼滤波
查看>>
java中volatile关键字的理解
查看>>
android studio插件【转】
查看>>
『原创』老范的来电防火墙v1.0发布了(图文)
查看>>
用Asp.net写自己的服务框架
查看>>
[转]Windows Server 2012体验之部署第一台域控制器
查看>>
【转载】来自Clean Code的一段话,正好形容公司目前一个系统
查看>>
C#重载和重写的区别
查看>>
【089】◀▶ Microsoft Office 技巧
查看>>
【转】自定义UITableViewCell控件阻挡回调不到didSelectRowAtIndexPath的解决办法
查看>>
将 SQL Server Express 版用于 ASP.NET (Visual Studio)
查看>>
Print Visual Tree
查看>>
获取AndroidManifest里的信息
查看>>
【翻译】Windows8支持WebSocket(相关技术)
查看>>
【Android LibGDX游戏引擎开发教程】第07期:中文字体的显示和绘制(上)
查看>>
ubuntu 12.04亮度无法调节和无法保存屏幕亮度解决办法(echo_brightness)
查看>>
jquery插件开发(checkbox全选的简单实例)
查看>>
五大常用算法之二:动态规划算法(DP)
查看>>
<<一种基于δ函数的图象边缘检测算法>>一文算法的实现。
查看>>
9款很酷炫jQuery/HTML5特效应用 有源码哦~
查看>>