日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hadoop高可用安装

發布時間:2023/12/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hadoop高可用安装 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Hadoop高可用安裝過程

在Hadoop安裝過程中在配置虛擬機網關地址的時候一定要仔細,千萬不要弄錯了,不然Ping.www.baidu會ping不出來。還有本來老師給了xshell5,然后后來我想試試安裝xshell6可不可以,然后之前的步驟是一直沒有問題的,但是到了傳輸文件的時候就不能傳輸,然后我卸掉了xshell6安裝了xshell5之后就可以了。在Hadoop安裝過程中千萬要做到仔細,不要拼寫錯誤。還有相互免秘鑰一定要成功不然之后的集群會啟動不起來,在出錯的時候,要學會查日志。還有在啟動集群之后千萬不要忘記關閉集群,如果電腦關機了之后集群跑不出來了,千萬崩潰,再來一遍就好了,堅持堅持,很重要。

1、分發jdk到node02、03、04

scp jdk-7u67-linux-x64.rpm node02:pwd
scp jdk-7u67-linux-x64.rpm node03:pwd
scp jdk-7u67-linux-x64.rpm node04:pwd

并在Xshell的全部會話欄里一起ll,看jdk是否發送成功。


2、給node02、03、04分別安裝jdk

分別在node02、03、04上執行rpm安裝命令
rpm -i jdk-7u67-linux-x64.rpm


在node01上cd /etc,在此目錄下把profile文件分發到node02、03、04上。
scp profile node02:pwd

利用Xshell全部會話欄,source /etc/profile
利用Xshell全部會話欄,jps,看02、03、04這三臺機子的jdk是否裝好。



3、同步所有服務器的時間

date查看機子當前的時間。
時間不能差太大,否則集群啟動后某些進程跑不起來。
若時間不同步,
1.yum進行時間同步器的安裝
yum -y install ntp




2.執行同步命令
ntpdate time1.aliyun.com 和阿里云服務器時間同步



4、裝機之前的配置文件檢查

1.cat /etc/sysconfig/network
查看HOSTNAME是否正確





2.cat /etc/hosts
查看IP映射是否正確,若不正確,可以改文件,也可以把node01上的用scp分發過去




3.cat /etc/sysconfig/selinux里是否出現SELINUX=disabled




4.service iptables status查看防火墻是否關閉


5、NN與其他三臺機子的免秘鑰設置

1.在家目錄下 ll -a看下有無.ssh文件,如果沒有就ssh loalhost一下(不能忘記exit)



2.cd .ssh ,并ll查看一下



3.把node01的公鑰發給其他三臺機子
scp id_dsa.pub node02:pwd/node01.pub node02公鑰發送到哪臺機子
node01的公鑰重命名
scp id_dsa.pub node03:pwd/node01.pub
scp id_dsa.pub node04:pwd/node01.pub


4. 在node02的.ssh目錄下ll看是否有node01.pub
如果有,那就追加到authorized_keys
cat node01.pub >> authorized_keys
并且在node01上ssh node02看是否免密鑰了,千萬不要忘了exit

同理給node03、04都追加一下node01.pub,也就是在node03、04的.ssh目錄下執行cat node01.pub >> authorized_keys



5.同理給其他節點發送公鑰并在各個節點上把node01的公鑰追加上
scp id_dsa.pub node03:pwd/node01.pub
scp id_dsa.pub node04:pwd/node01.pub
在node01上分別ssh node02,ssh node03,ssh node04,看是否能免密鑰登錄,每次ssh都別忘了exit

6、兩個NN間互相免密鑰

1.node01與node02間互相免密鑰: node01可免密鑰登錄node02,那現需node02上能免密鑰登node01,所以
在node02上:
ssh-keygen -t dsa -P ‘’ -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
ssh localhost驗證一下
分發到node01上:scp id_dsa.pub node01:pwd/node02.pub
在node01的.ssh目錄下,cat node02.pub >> authorized_keys,
在node02上ssh node01驗證一下可否免密鑰登錄


7、修改namenode的一些配置信息



1.vi hdfs-site.xml

?去掉snn的配置

dfs.namenode.secondary.http-address
node03:50090

?增加以下property

<property> <name>dfs.nameservices</name> <value>mycluster</value> </property> <property> <name>dfs.replication</name> <value>3</value> </property> <!-- nameservice 包含哪些namenode,為各個namenode起名 --> <property> <name>dfs.ha.namenodes. mycluster</name> <value>nn1,nn2</value> </property> <property> <name>dfs.namenode.rpc-address. mycluster.nn1</name> <value>node03:9000</value> </property> <!--名為nn1的namenode的http地址和端口號,用來和web客戶端通訊 --> <property> <name>dfs.namenode.http-address. mycluster.nn1</name> <value>node03:50070</value> </property> <property> <name>dfs.namenode.rpc-address. mycluster.nn2</name> <value>node04:9000</value> </property> <!--名為nn2的namenode的http地址和端口號,用來和web客戶端通訊 --> <property> <name>dfs.namenode.http-address. mycluster.nn2</name> <value>node04:50070</value> </property> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://node03:8485;node04:8485;node05:8485/mycluster</value> </property> <!-- journalnode 上用于存放edits日志的目錄 --> <property> <name>dfs.journalnode.edits.dir</name> <value>/var/ldy/hadoop/ha/jn</value> </property> <property> <name>dfs.ha.automatic-failover.enabled.cluster</name> <value>true</value> </property> <!-- 配置失敗自動切換實現方式 --> <property> <name>dfs.client.failover.proxy.provider.cluster</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> </property> <property> <name>dfs.ha.fencing.methods</name> <value>sshfence</value> </property> <!-- 如果使用ssh進行故障切換,使用ssh通信時用的密鑰存儲的位置 --> <property> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/root/.ssh/id_rsa</value> </property>

<!– 集群名稱mycluster–>

fs.defaultFS
hdfs://mycluster

<!– zookeeper布署的位置–>

ha.zookeeper.quorum
node07:2181,node08:2181,node09:2181



2.vi slaves
node02
node03
node04

3.安裝hadoop
cd /opt ,將其下的tjx目錄分發到node02、03、04
scp -r tjx/ node02:pwd
scp -r tjx/ node03:pwd
scp -r tjx/ node04:pwd


4.將hdfs-site.xml和core-site.xml分發到node02、03、04
scp hdfs-site.xml core-site.xml node02:pwd
scp hdfs-site.xml core-site.xml node03:pwd
scp hdfs-site.xml core-site.xml node04:pwd





8、安裝zookeeper

1、解壓安裝zookeeper
tar xf zookeeper-3.4.6.tar.gz -C /opt/tjx
在node02



2. 修改zookeeper的配置文件 cd /opt/tjx/zookeeper-3.4.6/conf
給zoo_sample.cfg改名 cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
改dataDir=/var/tjx/zk
并在末尾追加
server.1=node02:2888:3888
server.2=node03:2888:3888
server.3=node04:2888:3888
其中2888主從通信端口,3888是當主掛斷后進行選舉機制的端口


3.把zookeeper分發到其他節點
scp -r zookeeper-3.4.6/ node03:pwd scp -r zookeeper-3.4.6/ node04:pwd
并用ll /opt/tjx檢查下看分發成功沒


4.給每臺機子創建剛配置文件里的路徑
mkdir -p /var/tjx/zk
對node02來說:
echo 1 > /var/tjx/zk/myid
cat /var/tjx/zk/myid
對node03來說:
echo 2 > /var/tjx/zk/myid
cat /var/tjx/zk/myid
對node04來說:
echo 3 > /var/tjx/zk/myid
cat /var/tjx/zk/myid



5.在/etc/profile里面配置
export ZOOKEEPER_HOME=/opt/tjx/zookeeper-3.4.6
export ::PATH=PATH:/usr/java/jdk1.7.067/bin:PATH:/usr/java/jdk1.7.0_67/bin:PATH:/usr/java/jdk1.7.06?7/bin:HADOOP_HOME/bin:HADOOPHOME/sbin:HADOOP_HOME/sbin:HADOOPH?OME/sbin:ZOOKEEPER_HOME/bin




6.然后在把/etc/profile分發到其他node03、node04
scp /etc/profile node03:/etc
scp /etc/profile node04:/etc

在node02、03、04 source /etc/profile,驗證source這句是否完成,輸入zkCli.s,按Tab可以把名字補全zkCli.sh最后把zkCli.sh刪掉)

同理可得03、04


7.啟動zookeeper
在node02中全部會話:zkServer.sh start
接著用zkServer.sh status查看每個zookeeper節點的狀態



8、啟動journalnode

在01、02、03三臺機子上分別把journalnode啟動起來
hadoop-daemon.sh start journalnode



9、格式化任一namenode

選擇node01上執行hdfs namenode -format


然后,啟動剛剛格式化的namenode01
hadoop-daemon.sh start namenode

10、給另一namenode同步數據

給node02另外同步數據
hdfs namenode -bootstrapStandby


11、格式化zkfc

hdfs zkfc -formatZK


在node02上執行zkCli.sh打開zookeeper客戶端看hadoop-ha是否打開 (ls / 查看)

12、啟動hdfs集群

在node01中啟動hdfs集群start-dfs.sh

全部會話jps





用瀏覽器訪問node01:50070和node02:50070


關閉集群命令:stop-dfs.sh(在node01里面)
關閉zookeeper命令:zkServer.sh stop(全部對話框)





啟動hdfs集群
注意:你下一次啟動hdfs集群的時候start-dfs.sh

13、為MapReduce做準備

把mapred-site.xml.template留個備份,并且改下名字
cp mapred-site.xml.template mapred-site.xml
在mapred-site.xml里添加如下property

mapreduce.framework.name
yarn


在yarn-site.xml里添加如下property

yarn.nodemanager.aux-services
mapreduce_shuffle


yarn.resourcemanager.ha.enabled
true


yarn.resourcemanager.cluster-id
cluster1


yarn.resourcemanager.ha.rm-ids
rm1,rm2


yarn.resourcemanager.hostname.rm1
node03


yarn.resourcemanager.hostname.rm2
node04


yarn.resourcemanager.zk-address
node02:2181,node03:2181,node04:2181


把mapred-site.xml和yarn-site.xml 分發到node02、03、04
scp mapred-site.xml yarn-site.xml node02:pwd
scp mapred-site.xml yarn-site.xml node03:pwd
scp mapred-site.xml yarn-site.xml node04:pwd

由于node03和node04都是resourcemanager,所以它倆應該相互免密鑰
node03上免密鑰登錄node04:
在node03的.ssh目錄下生成密鑰
ssh-keygen -t dsa -P ‘’ -f ./id_dsa
并追加到自己authorized_keys
cat id_dsa.pub >> authorized_keys
用ssh localhost驗證看是否需要密碼,別忘了exit
將node03 的公鑰分發到node04
scp id_dsa.pub node04:pwd/node03.pub
在node04的.ssh目錄下,追加node03.pub
cat node03.pub >> authorized_keys
在node03上ssh node04,看是否免密鑰


node04上免密鑰登錄node03:
在node04的.ssh目錄下生成密鑰
ssh-keygen -t dsa -P ‘’ -f ./id_dsa
并追加到自己authorized_keys
cat id_dsa.pub >> authorized_keys
用ssh localhost驗證看是否需要密碼,別忘了exit
將node04 的公鑰分發到node03
scp id_dsa.pub node03:pwd/node04.pub
在node03的.ssh目錄下,追加node04.pub
cat node04.pub >> authorized_keys
在node04上ssh node03,看是否免密鑰


1.啟動zookeeper,全部會話zkServer.sh start




2.在node01上啟動hdfs,start-dfs.sh

3.在node01上啟動yarn,start-yarn.sh

4.在node03、04上分別啟動resourcemanager,
yarn-daemon.sh start resourcemanager


5.全部會話jps,看進程全不全




在瀏覽器訪問node03:8088,查看resourcemanager管理的內容

14、跑一個wordcount試試

1.cd /opt/tjx/hadoop-2.6.5/share/hadoop/mapreduce
2.在hdfs里建立輸入目錄和輸出目錄
hdfs dfs -mkdir -p /data/in
hdfs dfs -mkdir -p /data/out
3.將要統計數據的文件上傳到輸入目錄并查看
hdfs dfs -put ~/500miles.txt /data/in
hdfs dfs -ls /data/in
4. 運行wordcount(注意:此時的/data/out必須是空目錄
hadoop jar hadoop-mapreduce-examples-2.6.5.jar wordcount /data/in /data/out/result




5.查看運行結果
hdfs dfs -ls /data/out/result
hdfs dfs -cat /data/out/result/part-r-00000


15、關閉集群:

node01: stop-dfs.sh
node01: stop-yarn.sh (停止nodemanager)
node03,node04: yarn-daemon.sh stop resourcemanager
Node02、03、04:zkServer.sh stop





16、在Windows下配置hadoop的環境

1.把壓縮包解壓后的這三個文件夾放到一個usr文件夾里,把usr放到一個你知道的地方。


2.“此電腦”右鍵-屬性-高級系統設置

3.更改環境變量,增加HADOOP_HOME(上次就配好了沒有截圖所以我就直接打開了)

4.并且給path后追加HADOOP_HOME的bin目錄,注意:Windows里path的路徑分隔符是分號;,而不是冒號:

5.然后再新建一個變量HADOOP_USER_NAME


6.把hadoop.dll拷貝到以下路徑


7.安裝ecipse-mars,此版本的eclipse帶插件,可以可視化的看到hadoop的一些東西,比較方便

8.如果eclipse界面下方沒有小象圖標,則做后續三步調出上次已做已出現小象)點others


9.在eclipse里把hadoop相關信息填一下(上次已改已填)



(Hos中查哪個namenode是active就填哪一個)


10.這樣在eclipse左側列表的DFS location里新建一個目錄,對應hdfs里也就建好了,可以用瀏覽器查看一下,自己試試。
11.在eclipse里導入自己建一個包庫


12.把jar包導入剛建的包庫

13.把剛建的包庫引入到project里

14.把JUnit包庫引入到project里


15.利用xftp把hdfs-site.xml,core-site.xml等幾個xml放到project的src目錄


16.結果(最后得到的結果如下圖所示)

總結

以上是生活随笔為你收集整理的Hadoop高可用安装的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。