Hadoop 2.0安装以及不停集群加datanode
Hadoop2.0是對(duì)Hadoop1.0全面升級(jí),針對(duì)Namenode單點(diǎn)問題,提出了HDFS Federation,讓多個(gè)NameNode分管不同的目錄進(jìn)而實(shí)現(xiàn)訪問隔離和橫向擴(kuò)展。誕生了通用的計(jì)算框架YARN,YARN系統(tǒng)的引入使得計(jì)算框架進(jìn)入了平臺(tái)化時(shí)代,從云計(jì)算分層概念上講,YARN可看做PAAS層,很多計(jì)算框架或者應(yīng)用程序不再基于傳統(tǒng)的操作系統(tǒng)開發(fā),而是基于YARN這個(gè)云操作系統(tǒng)。典型的代表是DAG計(jì)算框架Tez,當(dāng)然還有一些其他知名的自運(yùn)行的計(jì)算集群系統(tǒng)也在YARN上有開源版本,比如Storm-on-yarn,Spark-on-yarn。我們先安裝一個(gè)Hadoop2.0環(huán)境,作為一切的開始。
?
單機(jī)環(huán)境中,Hadoop有偽分布式模式,即“單點(diǎn)集群”,在該模式下,所有的守護(hù)進(jìn)程均會(huì)運(yùn)行在單個(gè)節(jié)點(diǎn)上。
偽分布式模式安裝好了之后,繼續(xù)動(dòng)態(tài)加datanode,然后就是完全分布式的hadoop
希望了解hadoop2.0的改進(jìn)以及設(shè)計(jì)的亮點(diǎn)可以看這篇博文,HADOOP2.0(HDFS2)以及YARN設(shè)計(jì)的亮點(diǎn)
本文的hadoop版本是2.2.0,源碼以及編譯包的獲取地址:http://hadoop.apache.org/releases.html
[root@localhost hadoop]# pwd /root/hadoop [root@localhost hadoop]# ls hadoop-2.2.0 hadoop-2.2.0.tar.gz [root@localhost hadoop]# cd hadoop-2.2.0 [root@localhost hadoop-2.2.0]# ls bin etc include lib libexec LICENSE.txt logs NOTICE.txt README.txt sbin share?
步驟1 修改配置文件
修改Hadoop配置文件 ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh,這個(gè)根據(jù)實(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四個(gè)文件,省略了最外圍的<configuration></configuration>
<!-- mapred-site.xml --> <property><name>mapreduce.framework.name</name><value>yarn</value> </property> <!-- core-site.xml --> <property><name>fs.default.name</name><value>hdfs://192.168.12.67:8020</value> </property> <property><name>hadoop.tmp.dir</name><value>/hadoop-tmp</value><!-- 設(shè)置一個(gè)不會(huì)被linux定期刪除的文件夾,默認(rèn)情況下namenode和datanode的文件都會(huì)存在這個(gè)目錄下 --> </property> <!-- yarn-site.xml -->
<property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value>
<!-- 2.2版本中不支持中劃線‘-’這邊用下劃線 --> </property> <!-- hdfs-site.xml -->
<property><name>dfs.replication</name><value>1</value>
<!-- 默認(rèn)情況下,hdfs數(shù)據(jù)塊的副本數(shù)是3,在集群規(guī)模小于3的集群中,默認(rèn)參數(shù)會(huì)導(dǎo)致錯(cuò)誤,所以調(diào)整為1 --> </property>
?
修改/etc/hosts,把本機(jī)hostname從原來的127.0.0.1修改為本機(jī)ip
192.168.12.67 localhost修改${HADOOP_HOME}/etc/hadoop/slaves
192.168.12.67?
步驟2 設(shè)置免密碼登錄
#生成免密碼公密鑰對(duì),然后把公鑰加入自己的授權(quán)文件中,完成本機(jī)對(duì)本機(jī)的免密碼登錄 ssh-keygen -t rsa cd ~/.ssh/ cat id_ras.pub >> authorized_keys?
步驟3 啟動(dòng)Hadoop
格式化HDFS
?
./bin/hadoop namenode -format?
啟動(dòng)HDFS
cd $HADOOP_HOME ./sbin/start-dfs.sh啟動(dòng)YARN
cd $HADOOP_HOME ./sbin/start-yarn.sh?
通過以下URL可查看YARN是否啟動(dòng)成功: http://192.168.12.67:8088/
?jps可以看到運(yùn)行的進(jìn)程
[root@localhost hadoop-2.2.0]# jps 21454 SecondaryNameNode 31987 Jps 21302 DataNode 21718 NodeManager 21191 NameNode 21623 ResourceManager?
?
可以把hadoop的執(zhí)行腳本加入PATH,這樣方便以后直接調(diào)用hadoop腳本,具體就是修改/etc/profile文件,然后source /etc/profile生效
export PATH=$PATH:/root/hadoop/hadoop-2.2.0/bin運(yùn)行下hadoop腳本,就可以看到hdfs的文件系統(tǒng)了
[root@localhost hadoop-2.2.0]# hadoop fs -lshadoop提供了一個(gè)跑在yarn上的示例,可以運(yùn)行
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上正在運(yùn)行的作業(yè)
hadoop job -list?
完全分布式安裝,動(dòng)態(tài)加datanode機(jī)器
偽分布式安裝完成,下面試試完全分布式安裝(就是動(dòng)態(tài)加datanode場(chǎng)景)、
這里我隨便找了兩臺(tái)機(jī)器,把新加兩臺(tái)機(jī)器hostname dns解析加入namenode機(jī)器的/etc/hosts中,所有新加的機(jī)器的/etc/hosts上都要同步這個(gè)配置。否則有datanode無法連接到namenode exception
192.168.1.57 yhserver192.168.24.33 rhel6
修改${HADOOP_HOME}/etc/hadoop/slaves,加入新機(jī)器兩臺(tái)
192.168.1.57 192.168.24.33注意,我在加加機(jī)器的時(shí)候規(guī)范了下hdfs-site.xml配置文件,把namenode文件和datanode文件,指定相應(yīng)的目錄,當(dāng)然這樣改了之后,就需要重新做namenode格式化的操作了。如果一開始就規(guī)范好了,就可以不停下namenode,直接加datanode了。默認(rèn)沒有配置,就是在hadoop.tmp目錄下,各建立dfs name目錄保存相應(yīng)文件。
<property><name>dfs.namenode.name.dir</name><value>/hadoop/name</value> </property> <property><name>dfs.datanode.data.dir</name><value>/hadoop/dfs</value> </property>然后往新加的兩臺(tái)機(jī)器上,同步hadoop工程以及配置文件,然后設(shè)置免密碼登錄新加的兩臺(tái)機(jī)器,然后新加的機(jī)器上,各自單獨(dú)執(zhí)行
./sbin/hadoop-daemon.sh start datanode然后就可以看到新加的兩個(gè)datanode生效了
?
問題匯總
error: org.apache.hadoop.hdfs.server.protocol.DisallowedDatanodeException: Datanode denied communication with namenodedatanode無法連接到namenode,是因?yàn)闆]有在所有機(jī)器的/etc/hosts,配置好hostname ip對(duì)應(yīng)關(guān)系。配置好了,重啟就可以。
?
FATAL org.apache.hadoop.yarn.server.nodemanager.containermanager.AuxServices: Failed to initialize mapreduce_shuffle java.lang.RuntimeException: No class defiend for mapreduce_shuffleat 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 NodeManager java.lang.RuntimeException: No class defiend for mapreduce_shuffleat 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)不同版本間參數(shù)名稱不一樣,修改yarn-site.xml文件
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>mapreduce_shuffle</value>
</property>
?
?
?
參考
《Hadoop技術(shù)內(nèi)幕-深入解析YARN架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)原理》
DAG計(jì)算框架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
?
?
總結(jié)
以上是生活随笔為你收集整理的Hadoop 2.0安装以及不停集群加datanode的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JVM空间申请流程图
- 下一篇: 华为发布大模型时代AI存储新品