hadoop配置HA详细教程
生活随笔
收集整理的這篇文章主要介紹了
hadoop配置HA详细教程
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
準備工作
1.修改Linux主機名
2.修改IP
3.修改主機名和IP的映射關(guān)系 /etc/hosts
4.關(guān)閉防火墻
5.ssh免登陸
6.安裝JDK,配置環(huán)境變量等
7.注意集群時間要同步
安裝步驟:
1.安裝配置zooekeeper集群
1.1解壓
tar -zxvf zookeeper-3.4.5.tar.gz -C /home/hadoop/app/1.2修改配置
cd /home/hadoop/app/zookeeper-3.4.5/conf/cp zoo_sample.cfg zoo.cfgvim zoo.cfg修改:dataDir=/home/hadoop/app/zookeeper-3.4.5/tmp在最后添加:server.1=hadoop05:2888:3888server.2=hadoop06:2888:3888server.3=hadoop07:2888:3888保存退出然后創(chuàng)建一個tmp文件夾mkdir /home/hadoop/app/zookeeper-3.4.5/tmpecho 1 > /home/hadoop/app/zookeeper-3.4.5/tmp/myid1.3將配置好的zookeeper拷貝到其他節(jié)點(首先分別在hadoop06、hadoop07根目錄下創(chuàng)建一個hadoop目錄:mkdir /hadoop)
scp -r /home/hadoop/app/zookeeper-3.4.5/ hadoop06:/home/hadoop/app/scp -r /home/hadoop/app/zookeeper-3.4.5/ hadoop07:/home/hadoop/app/注意:修改hadoop06、hadoop07對應(yīng)/hadoop/zookeeper-3.4.5/tmp/myid內(nèi)容hadoop06:echo 2 > /home/hadoop/app/zookeeper-3.4.5/tmp/myidhadoop07:echo 3 > /home/hadoop/app/zookeeper-3.4.5/tmp/myid2.安裝配置hadoop集群
2.1解壓
tar -zxvf hadoop-2.6.4.tar.gz -C /home/hadoop/app/2.2配置HDFS(hadoop2.0所有的配置文件都在$HADOOP_HOME/etc/hadoop目錄下)
#將hadoop添加到環(huán)境變量中vim /etc/profileexport JAVA_HOME=/usr/java/jdk1.7.0_55export HADOOP_HOME=/hadoop/hadoop-2.6.4export PATH=$PATH:$JAVA_HOME/cluster1n:$HADOOP_HOME/cluster1n#hadoop2.0的配置文件全部在$HADOOP_HOME/etc/hadoop下cd /home/hadoop/app/hadoop-2.6.4/etc/hadoop2.2.1修改hadoop-env.shexport JAVA_HOME=/export/servers/jdk1.8.0_652.2.2修改core-site.xml
<configuration> <!-- 集群名稱在這里指定!該值來自于hdfs-site.xml中的配置 --> <property> <name>fs.defaultFS</name> <value>hdfs://cluster1</value> </property> <!-- 這里的路徑默認是NameNode、DataNode、JournalNode等存放數(shù)據(jù)的公共目錄 --> <property> <name>hadoop.tmp.dir</name> <value>/export/servers/hadoop-2.6.0-cdh5.14.0/HAhadoopDatas/tmp</value> </property><!-- ZooKeeper集群的地址和端口。注意,數(shù)量一定是奇數(shù),且不少于三個節(jié)點--> <property> <name>ha.zookeeper.quorum</name> <value>node01:2181,node02:2181,node03:2181</value> </property> </configuration>2.2.3修改hdfs-site.xml
<configuration> <!--指定hdfs的nameservice為cluster1,需要和core-site.xml中的保持一致 --> <property> <name>dfs.nameservices</name> <value>cluster1</value> </property> <!-- cluster1下面有兩個NameNode,分別是nn1,nn2 --> <property> <name>dfs.ha.namenodes.cluster1</name> <value>nn1,nn2</value> </property> <!-- nn1的RPC通信地址 --> <property> <name>dfs.namenode.rpc-address.cluster1.nn1</name> <value>node01:8020</value> </property> <!-- nn1的http通信地址 --> <property> <name>dfs.namenode.http-address.cluster1.nn1</name> <value>node01:50070</value> </property> <!-- nn2的RPC通信地址 --> <property> <name>dfs.namenode.rpc-address.cluster1.nn2</name> <value>node02:8020</value> </property> <!-- nn2的http通信地址 --> <property> <name>dfs.namenode.http-address.cluster1.nn2</name> <value>node02:50070</value> </property> <!-- 指定NameNode的edits元數(shù)據(jù)在JournalNode上的存放位置 --> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://node01:8485;node02:8485;node03:8485/cluster1</value> </property> <!-- 指定JournalNode在本地磁盤存放數(shù)據(jù)的位置 --> <property> <name>dfs.journalnode.edits.dir</name> <value>/export/servers/hadoop-2.6.0-cdh5.14.0/journaldata</value> </property> <!-- 開啟NameNode失敗自動切換 --> <property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value> </property> <!-- 指定該集群出故障時,哪個實現(xiàn)類負責執(zhí)行故障切換 --> <property> <name>dfs.client.failover.proxy.provider.cluster1</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> </property> <!-- 配置隔離機制方法,多個機制用換行分割,即每個機制暫用一行--> <property> <name>dfs.ha.fencing.methods</name> <value> sshfence </value> </property> <!-- 使用sshfence隔離機制時需要ssh免登陸 --> <property> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/root/.ssh/id_rsa</value> </property> <!-- 配置sshfence隔離機制超時時間 --> <property> <name>dfs.ha.fencing.ssh.connect-timeout</name> <value>30000</value> </property> </configuration>2.2.4修改mapred-site.xml
<configuration> <!-- 指定mr框架為yarn方式 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>2.2.5修改yarn-site.xml
<configuration> <!-- 開啟RM高可用 --> <property> <name>yarn.resourcemanager.ha.enabled</name> <value>true</value> </property> <!-- 指定RM的cluster id --> <property> <name>yarn.resourcemanager.cluster-id</name> <value>yrc</value> </property> <!-- 指定RM的名字 --> <property> <name>yarn.resourcemanager.ha.rm-ids</name> <value>rm1,rm2</value> </property> <!-- 分別指定RM的地址 --> <property> <name>yarn.resourcemanager.hostname.rm1</name> <value>node01</value> </property> <property> <name>yarn.resourcemanager.hostname.rm2</name> <value>node02</value> </property> <!-- 指定zk集群地址 --> <property> <name>yarn.resourcemanager.zk-address</name> <value>node01:2181,node02:2181,node03:2181</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>2.2.6修改slaves
node01 node02 node03將軟件拷貝到所有節(jié)點
scp -r hadoop-2.6.0-cdh5.14.0 node02:/$PWD scp -r hadoop-2.6.0-cdh5.14.0 node03:/$PWD2.2.7配置免密碼登陸
#首先要配置node01到node01、node02、node03 的免密碼登陸 #在node01上生產(chǎn)一對鑰匙 ssh-keygen #將公鑰拷貝到其他節(jié)點,****包括自己**** ssh-coyp-id node01 ssh-coyp-id node02 ssh-coyp-id node03 #注意:兩個namenode之間要配置ssh免密碼登陸 ssh遠程補刀時候需要 #在node02上生產(chǎn)一對鑰匙 ssh-keygen #將公鑰拷貝到node01 ssh-coyp-id node012.5啟動zookeeper集群(分別在node01、node02、node03上啟動zk)
bin/zkServer.sh start#查看狀態(tài):一個leader,兩個followerbin/zkServer.sh status2.6手動啟動journalnode(分別在在node01、node02、node03上執(zhí)行)
hadoop-daemon.sh start journalnode#運行jps命令檢驗,node01、node02、node03上多了JournalNode進程2.7格式化namenode
#在node01上執(zhí)行命令:hdfs namenode -format#格式化后會在根據(jù)core-site.xml中的hadoop.tmp.dir配置的目錄下生成個hdfs初始化文件,把hadoop.tmp.dir配置的目錄下所有文件拷貝到另一臺namenode節(jié)點所在的機器scp -r tmp/ node02:/home/hadoop/app/hadoop-2.6.4/##也可以這樣,建議hdfs namenode -bootstrapStandby2.8格式化ZKFC(在active上執(zhí)行即可)
hdfs zkfc -formatZK2.9啟動HDFS(在node01上執(zhí)行)
start-dfs.sh2.10啟動YARN
start-yarn.sh還需要手動在standby上手動啟動備份的 resourcemanageryarn-daemon.sh start resourcemanager到此,hadoop-2.6.4配置完畢,可以統(tǒng)計瀏覽器訪問:
http://node01:50070NameNode 'node01:8020' (active)http://node02:50070NameNode 'node02:8020' (standby)驗證HDFS HA
首先向hdfs上傳一個文件hadoop fs -put /etc/profile /profilehadoop fs -ls /然后再kill掉active的NameNodekill -9 <pid of NN>通過瀏覽器訪問:http://node02:50070NameNode 'node02:8020' (active)這個時候node02上的NameNode變成了active在執(zhí)行命令:hadoop fs -ls /-rw-r--r-- 3 root supergroup 1926 2014-02-06 15:36 /profile剛才上傳的文件依然存在!!!手動啟動那個掛掉的NameNodehadoop-daemon.sh start namenode通過瀏覽器訪問:http://node01:50070NameNode 'node01:8020' (standby)驗證YARN:
運行一下hadoop提供的demo中的WordCount程序:hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.4.1.jar wordcount /profile /outOK,大功告成!!!
測試集群工作狀態(tài)的一些指令 :
hdfs dfsadmin -report 查看hdfs的各節(jié)點狀態(tài)信息 cluster1n/hdfs haadmin -getServiceState nn1 獲取一個namenode節(jié)點的HA狀態(tài) scluster1n/hadoop-daemon.sh start namenode 單獨啟動一個namenode進程 ./hadoop-daemon.sh start zkfc 單獨啟動一個zkfc進程總結(jié)
以上是生活随笔為你收集整理的hadoop配置HA详细教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#基础|面向对象之多态
- 下一篇: 软件工程师相关日语