Hadoop源碼分析二安裝配置過程詳解
安裝hadoop有好幾種方式,以下按照hdfs高可用的方式來安裝。
1、 創(chuàng)建用戶
命令:
useradd -m bigdata passwd bigdata
2、 安裝jdk
解壓:
tar -zvf jdk-8u191-linux-x64.tar.gz
修改環(huán)境變量
JAVA_HOME=/usr/lib/jvm/java-8-openjdk-arm64 JRE_HOME=/usr/lib/jvm/java-8-openjdk-arm64/jre CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin export JAVA_HOME JRE_HOME PATH CLASSPATH
3、 修改hosts
修改/etc/hosts
10.211.55.12 hadoop01 # NameNode Active 10.211.55.13 hadoop01 # NameNode Standby 10.211.55.14 hadoop01 # DataNode1
4、 配置ssh免密登錄
在每一臺需要配置的機(jī)器上執(zhí)行以下命令:
ssh-keygen –t rsa
執(zhí)行完成后默認(rèn)會在其根目錄下創(chuàng)建一個.ssh目錄,在這個目錄中有id_rsa和id_rsa.pub兩個文件。然后將所有機(jī)器的id_rsa.pub文件的內(nèi)容都合并到一個新的文件中,文件命名為authorized_keys,然后將該文件分發(fā)到各臺機(jī)器上。
最后,使用ssh登錄其他機(jī)器測試是否完成免密。
5、 安裝zookeeper
下載鏈接:https://zookeeper.apache.org/releases.html
解壓:
tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz
修改配置文件
將zookeeper下conf目錄中的zoo_sample.cfg文件復(fù)制一份,新復(fù)制的文件重命名為zoo.cfg文件。
修改內(nèi)容如下:
#zookeeper的文件路徑 dataDir=/root/zookeeper/data #zookeeper集群節(jié)點(diǎn)信息 server.1=hadoop01:2888:3888 server.2=hadoop02:2888:3888 server.3=hadoop03:2888:3888
#server.A=B:C:D 其中A是一個數(shù)字,代表這是第幾號服務(wù)器;B是服務(wù)器的IP地址;C表示服務(wù)器與群集中的“領(lǐng)導(dǎo)者”交換信息的端口;當(dāng)領(lǐng)導(dǎo)者失效后,D表示用來執(zhí)行選舉時(shí)服務(wù)器相互通信的端口。
然后在上述設(shè)置的文件目錄中新建一個文件,文件名為myid,文件內(nèi)容為一個數(shù)字。例如上述配置的hadoop01對應(yīng)的是server.1,它的myid的文件內(nèi)容就是1。
配置環(huán)境變量
修改/etc/profile文件
export ZOOKEEPER_HOME=/root/zookeeper export PATH=$PATH:$ZOOKEEPER_HOME/bin
啟動
啟動命令如下
#啟動 zkServer.sh start #查詢狀態(tài) zkServer.sh status
6、 安裝hadoop
對于三臺節(jié)點(diǎn)的配置安排如下:
hadoo01:journalnode、namenode、datanode、resourcemanager、nodemanager
hadoo02:journalnode、namenode、datanode、resourcemanager、nodemanager
hadoo03:journalnode、datanode、nodemanager
下載鏈接:https://hadoop.apache.org/releases.html
解壓:
tar -zxvf hadoop-2.7.6.tar.gz
修改配置文件:
hadoop的配置文件在解壓后文件夾的etc目錄下的hadoop目錄中。
修改core-site.xml
<configuration>
<!-- 配置hdfs的名稱,其中value標(biāo)簽中的nns1為自定義的,與后文hdfs-site.xml中的屬性對應(yīng)即可-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://nns1</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<!-- 其他臨時(shí)文件的存儲的目錄-->
<property>
<name>hadoop.tmp.dir</name>
<value>/data/HadoopData/HDFSData</value>
</property>
<!-- 下面兩項(xiàng)與權(quán)限相關(guān),在配置hiveserver2的時(shí)候如果沒配置這兩項(xiàng)會出問題。name標(biāo)簽中的root需要改為你使用的用戶名-->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
<!-- -->
<!-- 配置zookeeper-->
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
</property>
</configuration>
配置hdfs-site.xml
<configuration>
<!-- 配置hdfs服務(wù),需要與上文中的fs.defaultFS對應(yīng)-->
<property>
<name>dfs.nameservices</name>
<value>nns1</value>
</property>
<!-- 配置hdfs的namenode,使用“,”分隔,value標(biāo)簽中的內(nèi)容需要自定義-->
<property>
<name>dfs.ha.namenodes.nns1</name>
<value>nn1,nn2</value>
</property>
<!-- 配置兩臺namenode,name標(biāo)簽最后的內(nèi)容需要與上文對應(yīng)-->
<property>
<name>dfs.namenode.rpc-address.nns1.nn1</name>
<value>hadoop01:9000</value>
</property>
<property>
<name>dfs.namenode.rpc-address.nns1.nn2</name>
<value>hadoop02:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.nns1.nn1</name>
<value>hadoop01:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.nns1.nn2</name>
<value>hadoop02:50070</value>
</property>
<!--配置journalnode,修改value中的ip地址與端口便可,最后的nns1可以改為上述定義的名稱 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop01:8485;hadoop02:8485;hadoop03:8485/nns1</value>
</property>
<!-- 客戶端連接可用狀態(tài)的NameNode所用的代理類 -->
<property>
<name>dfs.client.failover.proxy.provider.nns1</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- 一旦需要NameNode切換,使用ssh方式進(jìn)行操作,配置了這個需要服務(wù)器能使用fuster,有的服務(wù)器可能需要安裝 -->
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<!-- 如果使用ssh進(jìn)行故障切換,使用ssh通信時(shí)用的密鑰存儲的位置 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
<!-- 指定journalnode的存儲路徑 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/data/HadoopData/HDFSData/journal</value>
</property>
<!-- 是否啟動自動故障轉(zhuǎn)移 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 指定namenode數(shù)據(jù)存儲路徑 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>/data/HadoopData/HDFSData/name</value>
</property>
<!-- 指定datanode數(shù)據(jù)存儲路徑 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/HadoopData/HDFSData/data</value>
</property>
<!-- 設(shè)置文件副本數(shù) -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 是否啟動hdfs網(wǎng)頁界面 -->
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
配置mapred-site.xml
<configuration>
<!-- 采用yarn作為mapreduce的資源調(diào)度框架 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
配置yarn-site.xml
<configuration>
<!-- 啟用HA高可用性 -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!-- 使用了2個resourcemanager,分別指定Resourcemanager的地址 -->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!-- 配置集群名稱 -->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>cluster1-yarn</value>
</property>
<!--配置RM節(jié)點(diǎn) -->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>hadoop01</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>hadoop02</value>
</property>
<!--在hadoop01上配置rm1,在hadoop02上配置rm2,注意:一般都喜歡把配置好的文件遠(yuǎn)程復(fù)制到其它機(jī)器上,但這個在YARN的另一個機(jī)器上一定要修改 -->
<property>
<name>yarn.resourcemanager.ha.id</name>
<value>rm1</value>
</property>
<!--開啟自動恢復(fù)功能 -->
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>
<!--配置與zookeeper的連接地址 -->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
</property>
<!-- 配置shuffle -->
<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>
</configuration>
配置slaves
hadoop01 hadoop02 hadoop03
slaves中配置的服務(wù)器ip,沒改hosts文件則直接寫ip地址便可。該文件配置的服務(wù)器在啟動的時(shí)候會啟動datanode和nodemanager兩個進(jìn)程。
7、 初始化
在初始化前需要將所有機(jī)器都配置好hadoop
(一般直接復(fù)制上述配置好的文件,注意yarn-site.xml中的id,還有保證配置中的路徑在每臺機(jī)器上都存在)。
(1) 啟動zookeeper
初始化之前需要保證zookeeper能正常提供服務(wù),啟動命令之前有提到
(2) 啟動journalnode
初始化前需要保證journalnode已經(jīng)啟動。啟動腳本在hadoop的sbin目錄下,名字為hadoop-daemon.sh。
啟動命令如下:
./hadoop-daemon.sh start journalnode
(3) 格式化zk
命令如下
hdfs zkfc -formatZK
(4) 格式化hdfs
命令如下
hadoop namenode -format
這一步會在上述hdfs-site.xml,配置的dfs.namenode.name.dir路徑下創(chuàng)建一系列文件。
(5) 同步元數(shù)據(jù)
在另一臺配置了namenode的服務(wù)器上執(zhí)行以下命令:
hdfs namenode -bootstrapStanby
上述命令如果執(zhí)行失敗,還有一個簡單的方法可以同步元數(shù)據(jù)??梢灾苯訉⒉襟E4中在第一臺生成的文件復(fù)制到第二臺服務(wù)器。
(6) 啟動hadoop
同樣在sbin目錄下,使用start-all.sh可以啟動所有服務(wù),使用start-dfs.sh和start-yarn.sh可以分別啟動hdfs和yarn。
使用hadoop-deamon.sh和yarn-deamon.sh分別別啟動hdfs和yarn的單個進(jìn)程。
(7) 安裝fuster
安裝命令如下:
yum install psmisc
(8) 網(wǎng)頁訪問
hdfs網(wǎng)頁訪問50070端口,yarn網(wǎng)頁訪問8088。這兩個端口可以在配置文件中修改。
正常啟動則可以訪問到以下頁面。


以上就是Hadoop源碼分析二安裝配置過程的詳細(xì)內(nèi)容,本系列下一篇文章傳送門Hadoop源碼分析三啟動及腳本剖析更多Hadoop源碼分析的資料請持續(xù)關(guān)注腳本之家!
相關(guān)文章
詳解java代碼中init method和destroy method的三種使用方式
這篇文章主要介紹了詳解java代碼中init method和destroy method的三種使用方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
Java7之forkjoin簡介_動力節(jié)點(diǎn)Java學(xué)院整理
Java7引入了Fork Join的概念,來更好的支持并行運(yùn)算。接下來通過本文給大家分享Java7之forkjoin簡介,感興趣的朋友一起看看吧2017-06-06
SpringBoot+URule實(shí)現(xiàn)可視化規(guī)則引擎的方法示例
規(guī)則引擎其實(shí)是一種組件,它可以嵌入到程序當(dāng)中,將程序復(fù)雜的判斷規(guī)則從業(yè)務(wù)代碼中剝離出來,使得程序只需要關(guān)心自己的業(yè)務(wù),而不需要去進(jìn)行復(fù)雜的邏輯判斷,本文給大家介紹了SpringBoot+URule實(shí)現(xiàn)可視化規(guī)則引擎的方法示例,需要的朋友可以參考下2024-12-12
springboot項(xiàng)目中添加自定義日志及配置過程
這篇文章主要介紹了springboot項(xiàng)目中添加自定義日志,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07
springBoot項(xiàng)目中使用@Value取值出現(xiàn)的問題及解決
這篇文章主要介紹了springBoot項(xiàng)目中使用@Value取值出現(xiàn)的問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07
如何利用Spring?MVC實(shí)現(xiàn)RESTful風(fēng)格
這篇文章主要介紹了如何利用Spring?MVC實(shí)現(xiàn)RESTful風(fēng)格,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02

