Hadoop手动升级HA配置手册
Hadoop手動升級HA配置手冊
1 Hadoop組件升級
本文是Apache hadoop、Hbase升級至CDH版hadoop、Hbase,同時涵蓋了Hadoop HA的配置的操作手冊..
2 Hadoop升級
2.1 Hadoop升級準備
2.1.1 環境說明
Hadoop原始版本、升級版本分別為:Apache Hadoop 1.2.1,hadoop2.5.0-CDH5.3.3
2.1.2 升級準備
2.1.2.1 升級JDK
#如果JDK版本已經是1.7以上,此步可略過
rpm –ivh oracle-j2sdk1.7-1.7.0+update67-1.x86_64.rpm
注:默認安裝在/usr/java目錄內
2.1.2.2 停Hbase相關外圍應用、停Hbase服務
stop-hbase.sh
注:此時zookeeper和Hadoop相關主進程皆不需要停.
2.1.2.3 備份Namenode元數據
#hadoop先進入安全模式,合并edits并備份namenode元數據
hadoop dfsadmin -safemode enter
hadoop dfsadmin -saveNamespace
stop-all.sh
cp? /app/data/name/*/app/data/name_bak/
注:這里的/app/data/name/來至Hadoop1.2.1里hdfs-site.xmldfs.name.dir的配置
2.1.2.4 上傳新版Hadoop并做好相關配置文件的設置
#上傳并解壓安裝包hadoop-2.5.0-cdh5.3.3.tar.gz到namenode所在機器上,如:/app/
tar –zxvf hadoop-2.5.0-cdh5.3.3.tar.gz
# 檢查主節點安裝包執行目錄是否有執行權限
#配置如下參數文件:
#core-site.xml,hadoop-env.sh,hdfs-site.xml,mapred-site.xml,slaves,yarn-site.xml,yarn-evn.sh,master
a)? 配置core-site.xml
#基本沿用1代時的配置.
b)? hadoop-env.sh
exportJAVA_HOME=/usr/java/jdk1.7.0_67-cloudera/
export HADOOP_HEAPSIZE=70000
c)? hdfs-site.xml
#修改參數如下參數的名稱以兼容2代, 其它參數沿用.
#修改參數dfs.name.dir為dfs.namenode.name.dir
#修改參數dfs.data.dir為dfs.datanode.data.dir
d)? mapred-site.xml
#新增yarn參數,之前1代的參數可以注釋掉
<property><name>mapreduce.framework.name</name><value>yarn</value> </property> <property> <name>mapred.system.dir</name> <value>/home/shenl/hadoop1.2.1/system</value> </property> <property> <name>mapred.local.dir</name> <value>/home/shenl/hadoop1.2.1/local</value> </property>e)? slaves
沿用1代的配置
f)? yarn-site.xml
<property> <name>yarn.resourcemanager.address</name> <value>master1:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>master1:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master1:8031</value> </property><property><name>yarn.resourcemanager.admin.address</name> <value>master1:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>master1:8088</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property>注:這里master1是namenode的主機名
g)? yarn-env.sh
#修改JAVA_HOME
exportJAVA_HOME=/usr/java/jdk1.7.0_67-cloudera/
h)? master
#新增master文件,填寫namenode的主機名
2.1.2.5 在Namenode節點里分發已經配置好的2代hadoop
scp -rq /app/hadoop-2.5.0-cdh5.3.3 hadoop@datanode1:/app/&&
scp -rq /app/hadoop-2.5.0-cdh5.3.3 hadoop@datanode2:/app/&&
2.1.2.6 在所有節點上配置HADOOP_HOME被生效
vi ~/bash_profile
export HADOOP_HOME=/home/shenl/hadoop-2.5.0-cdh5.3.3
source ~/.bash_profile
which hadoop?
which hadoop-daemon.sh
2.2 Hadoop升級回滾
2.1升級Hadoop
2.1.1 升級Namenode
#觀察namenode日志
tail-f hadoop-hadoop-namenode-bigdata01.log
hadoop-daemon.shstart namenode -upgrade
注:Namenode日志穩定后,即可任務升級成功
2.1.2 升級Datanode
#升級Datanode,可以在Namenode里對所有時間節點同時升級
hadoop-daemons.shstart datanode
#數據節點日志如下:
注:在namenode日志里看到所有的數據節點成功方可認為升級完成
2.1.3 升級Datanode
#namenode節點上執行, YARN驗證
yarn-daemon.sh startresourcemanager
yarn-daemons.shstart nodemanager
mr-jobhistory-daemon.shstart historyserver
#執行wordcount驗證:
hadoopjar/home/shenl/hadoop-2.5.0-cdh5.3.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0-cdh5.3.3.jarwordcount /shenl/gc.log /shenl3/
注:檢測控制臺執行過程 map 100% reduce 100% 即任務執行成功 或則到 8088端口查看作業情況.
2.2 回滾hadoop
#還原回1代Hadoop的環境變量,并生效,參數文件指向1代
2.2.2.1 回滾Namenode
hadoop-daemon.shstart namenode -rollback
2.2.2.2 回滾Datanode
hadoop-daemons.shstart datanode –rollback
3 Hbase升級
3.1 Hadoop升級準備
3.1.1 環境說明
Hbase原始版本、升級版本分別為:Hbase 0.96.1.1 ,hbase0.98.6-cdh5.3.3
3.1.2 升級準備
3.1.2.1 上傳并解壓安裝文件
上傳并解壓安裝包(hbase-0.98.6-cdh5.3.3.tar.gz)到Hmaster機器上,如目錄:/app/
tar–zxvf? hbase-0.98.6-cdh5.3.3.tar.gz
3.1.2.2 修改hbase-env.sh里的相關參數
#修改引用的JDK
export?JAVA_HOME=/usr/java/jdk1.7.0_67-cloudera/
export ?HBASE_HEAPSIZE=8000
export?HBASE_PID_DIR=/home/shenl/pids/hbase96
3.1.2.3 拷貝1代hbase的相關參數
#拷貝1代hbase的conf下的Hbase-site.xml、regionserver到2代的conf下.
3.1.2.4 拷貝hmaster里hbase到各slave節點
#分發2代hbase到各個節點
scp -r /app/hbase-0.98.6-cdh5.3.3hadoop@datanode1:/app/
3.1.2.5 各節點里修改Hbase的環境變量
#修改用戶的環境變量,指定$HBASE_HOME并追加$HBASE_HOME/bin到PATH
vi ~/.bash_profile
exportHBASE_HOME=/home/impala/hbase-0.98.6-cdh5.3.3
source ~/.bash_profile
3.2 Hbase升級回滾
4.1 升級Hbase
執行升級檢查和升級命令(Hmaster節點)
hbase upgrade –check
hbase upgrade –execute
#啟動hbase (Hmaster節點上執行)
start-hbase.sh
4.2回滾hbase
修改回之前的環境變量,生效后啟動即可.
5 Hadoop HA配置
5.1 Hadoop Yarn HA配置
5.1.1 hdfs-site.xml參數配置,注意看HASupport部分
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl"href="configuration.xsl"?><configuration><property> <name>dfs.namenode.name.dir</name> <value>file:///home/shenl/home/impala/data/hadoop1.2.1</value> </property><property> <name>dfs.datanode.data.dir</name> <value>file:///home/shenl/home/impala/dfs_data01/dfs1.2.1</value> </property><property> <name>dfs.replication</name> <value>3</value> </property><property> <name>hadoop.tmp.dir</name> <value>/home/shenl/var/hadoop1.2.1/tmp</value> </property><property> <name>dfs.http.address</name> <value>master1:50070</value> </property><property> <name>dfs.datanode.du.reserved</name> <value>10737418240</value> </property><property> <name>dfs.permissions</name> <value>false</value> </property><property> <name>dfs.secondary.http.address</name> <value>data1:50090</value> <description> The secondary namenode http server address and port. If the port is 0 then the server will start on a freeport. </description></property> <property> <name>dfs.datanode.max.xcievers</name> <value>4096</value> </property><property> <name>dfs.hosts.exclude</name> <value>/home/shenl/home/impala/src/hadoop-1.2.1/conf/slaves.ex</value> </property><!-- HA Configure --> <property><name>dfs.nameservices</name><value>zzg</value> </property> <property><name>dfs.ha.namenodes.zzg</name><value>master1,data1</value> </property> <property><name>dfs.namenode.rpc-address.zzg.master1</name><value>master1:9000</value> </property> <property><name>dfs.namenode.rpc-address.zzg.data1</name><value>data1:9000</value> </property> <property><name>dfs.namenode.http-address.zzg.master1</name><value>master1:50070</value> </property> <property><name>dfs.namenode.http-address.zzg.data1</name><value>data1:50070</value> </property> <property><name>dfs.namenode.servicerpc-address.zzg.master1</name><value>master1:53310</value> </property> <property><name>dfs.namenode.servicerpc-address.zzg.data1</name><value>data1:53310</value> </property> <property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://data1:8485;data2:8485;data3:8485/zzg</value> </property> <property><name>dfs.journalnode.edits.dir</name><value>/home/shenl/usr/local/cloud/data/hadoop/ha/journal</value> </property> <property><name>dfs.client.failover.proxy.provider.zzg</name><value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> </property> <property><name>dfs.ha.automatic-failover.enabled</name><value>true</value> </property> <property><name>ha.zookeeper.quorum</name><value>data1:2181,data2:2181,data3:2181</value> </property> <property><name>dfs.ha.fencing.methods</name><value>sshfence</value> </property> <property><name>dfs.ha.fencing.ssh.private-key-files</name><value>/home/shenl/.ssh/id_rsa</value> </property></configuration>5.1.2 ?yarn-site.xml參數配置,注意看HA Support部分.
<configuration><property> <name>yarn.resourcemanager.address</name> <value>master1:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>master1:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master1:8031</value> </property><property><name>yarn.resourcemanager.admin.address</name> <value>master1:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>master1:8088</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <!-- HA Support --><property><name>yarn.resourcemanager.connect.retry-interval.ms</name><value>2000</value></property><property><name>yarn.resourcemanager.ha.enabled</name><value>true</value></property><property><name>yarn.resourcemanager.ha.automatic-failover.enabled</name><value>true</value></property><property><name>yarn.resourcemanager.ha.rm-ids</name><value>rm1,rm2</value></property><property><name>yarn.resourcemanager.recovery.enabled</name><value>true</value></property><property><name>yarn.resourcemanager.zk-state-store.address</name><value>data1:2181,data2:2181,data3:2181</value></property><property><name>yarn.resourcemanager.store.class</name><value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value></property><property><name>yarn.resourcemanager.zk-address</name><value>data1:2181,data2:2181,data3:2181</value></property><property><name>yarn.resourcemanager.cluster-id</name><value>zzg</value></property><property><name>yarn.app.mapreduce.am.scheduler.connection.wait.interval-ms</name><value>5000</value></property><property><name>yarn.resourcemanager.address.rm1</name><value>master1:23140</value></property><property><name>yarn.resourcemanager.scheduler.address.rm1</name><value>master1:23130</value></property><property><name>yarn.resourcemanager.webapp.address.rm1</name><value>master1:23188</value></property><property><name>yarn.resourcemanager.resource-tracker.address.rm1</name><value>master1:23125</value></property><property><name>yarn.resourcemanager.admin.address.rm1</name><value>master1:23141</value></property><property><name>yarn.resourcemanager.ha.admin.address.rm1</name><value>master1:23142</value></property><property><name>yarn.resourcemanager.address.rm2</name><value>data1:23140</value></property><property><name>yarn.resourcemanager.scheduler.address.rm2</name><value>data1:23130</value></property><property><name>yarn.resourcemanager.webapp.address.rm2</name><value>data1:23188</value></property><property><name>yarn.resourcemanager.resource-tracker.address.rm2</name><value>data1:23125</value></property><property><name>yarn.resourcemanager.admin.address.rm2</name><value>data1:23141</value></property><property><name>yarn.resourcemanager.ha.admin.address.rm2</name><value>data1:23142</value></property><property><description>Address where the localizer IPCis.</description><name>yarn.nodemanager.localizer.address</name><value>0.0.0.0:23344</value></property><property><description>NM Webapp address.</description><name>yarn.nodemanager.webapp.address</name><value>0.0.0.0:23999</value></property><property><name>yarn.nodemanager.local-dirs</name><value>/home/shenl/usr/local/cloud/data/hadoop/yarn/local</value></property><property><name>yarn.nodemanager.log-dirs</name><value>/home/shenl/usr/local/cloud/data/logs/hadoop</value></property><property><name>mapreduce.shuffle.port</name><value>23080</value></property><property><name>yarn.client.failover-proxy-provider</name><value>org.apache.hadoop.yarn.client.ConfiguredRMFailoverProxyProvider</value></property></configuration>5.2 Hadoop HA初始化
5.2.1停hbase和hadoop服務
stop-habase.sh
stop-all.sh
5.2.2啟動JournalNode服務
hadoop-daemon.sh start journalnode
注: hdfs-site.xml里8485端口對應的節點上執行.
#驗證:訪問web頁面 data2:8480, data3:8480, data4:8480 或則jps查看進程
????????
5.2.3 格式化所有JournalNode
hdfs namenode -initializeSharedEdits -force?
注:
1 這里默認master1為主namenode,data1為備namenode,如上命令在master1里執行)
2 這個操作影響的參數和目錄為 HDFS-SITE.xml里的dfs.journalnode.edits.dir? 參考值為:/home/shenl/data/hadoop/ha/journal
3 這一操作主要完成格式化所有JournalNode,以及將日志文件從master1拷貝到所有JournalNode
5.2.4 在master1里執行ZookeeperHA格式化
hdfs zkfc -formatZK
???????
????????????
5.2.5 拷貝主namenode元數據到備節點內
scp -r home/impala/data/hadoop1.2.1/* hadoop@data1:/home/shenl/data/hadoop1.2.1
注:
拷貝master1節點內的dfs.namenode.name.dir和共享dfs.namenode.shared.edits.dir目錄的內容到data1的相應目錄內.
5.2.6 在master1里啟動namenode
hadoop-daemon.sh start namenode
5.2.7 在data1里啟動namenode
hadoop-daemon.sh start namenode
5.2.8 在master1里啟動所有的datanode
hadoop-daemons.sh start datanode ????????????????????????????????????
注:此時 查看頁面master1:35070、data1:35070,兩個namenode都是出于standby的狀態,因為還未開啟選舉服務。
5.2.9 在master1和data1內啟動自動選舉服務
hadoop-daemon.sh start zkfc
???
5.2.10 在master1里執行命令驗證HA是否正常
???????? hdfshaadmin -getServiceState master1
???????? hdfshaadmin -DFSHAadmin -failover master1 data1
?#或則kill -9 active的namenode,驗證standy的namenode是否變為active
5.3 YARN HA驗證
5.3.1?? 配置YARN HA參數
#HA 參數已經在HADOOP HA時配置好
5.3.2?? 驗證
1)??? 分別在主namenode和備namenode里執行
yarn-daemon.shstart resourcemanager
2)??? 在主namenode里執行
yarn-daemons.shstart nodemanager
3)??? 在主namenode里執行
mr-jobhistory-daemon.shstart historyserver
4)??? 執行Yarn HA狀態驗證腳本
yarn rmadmin -getServiceState rm1
yarn rmadmin -getServiceState rm2
5)??? kill-9 active的nodemanager 測試
6)??? 驗證wordcont MR程序,執行如下命令:
hadoopjar /home/shenl/hadoop-2.5.0-cdh5.3.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0-cdh5.3.3.jarwordcount /shenl/gc.log /shenl3/
如果成功,視為Yarn HA可用.
6 Hbase HA配置
6.1 Hbase HA配置
6.1.1?? 配置Hbase HA參數
1)??? 拷貝配置了Hadoop HA的core-site.xml,hdfs-site.xml到Hmaster節點的conf目錄
cp/home/shenl/hadoop-2.5.0-cdh5.3.3/etc/hadoop/core-site.xml .
cp/home/ shenl /hadoop-2.5.0-cdh5.3.3/etc/hadoop/hdfs-site.xml .
2)??? Hmaster的conf目錄里新增backup-master文件,填寫作為備份master的主機名(如data1)
3)??? scpHmaster節點的conf的內容到各個從節點
4)??? 在hbase主節點里執行start-hbase.sh
6.2 Hbase HA驗證
kill -9 一個active的Hmaster,在Hbase shell執行
put 'shenl' ,'row11','a:name','hello'
7 Hadoop升級最終化
#集群穩定后,執行最終化以提交本次升級任務.
hadoop dfsadmin –finalizeUpgrade
8 總結
結合日志分析具體問題.
總結
以上是生活随笔為你收集整理的Hadoop手动升级HA配置手册的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 哪些旅游城市房产适合外地人投资
- 下一篇: 二屋楼下面开店上面做仓库可以吗?