天天看點

大資料環境搭建(二):分布式環境搭建

文章目錄

​​分布式環境搭建​​

​​叢集規劃​​

​​安裝包解壓​​

​​配置檔案的修改​​

​​修改core-site.xml​​

​​修改hdfs-site.xml​​

​​修改yarn-site.xml,注意node03與node02配置不同​​

​​修改mapred-site.xml​​

​​修改slaves​​

​​修改hadoop-env.sh​​

​​叢集啟動過程​​

​​啟動HDFS過程​​

​​啟動yarn過程​​

​​檢視resourceManager狀态​​

​​node3啟動jobHistory​​

​​hdfs狀态檢視​​

​​yarn叢集通路檢視​​

​​曆史任務浏覽界面​​

分布式環境搭建

叢集規劃

使用完全分布式,實作namenode高可用,ResourceManager的高可用

叢集運作服務規劃

node1 node2 node3
zookeeper zk zk zk
HDFS JournalNode JournalNode JournalNode
NameNode NameNode
ZKFC ZKFC
DataNode DataNode DataNode
YARN ResourceManager ResourceManager
NodeManager NodeManager NodeManager
MapReduce JobHistoryServer

安裝包解壓

停止之前的hadoop叢集的所有服務,然後重新解壓編譯後的hadoop壓縮包

解壓壓縮包

node1機器執行以下指令進行解壓

mkdir -p /opt/software

mkdir -p /opt/server

cd /opt/software

tar -zxvf hadoop-2.7.5.tar.gz -C /opt/server/

cd /opt/server/hadoop-2.7.5/etc/hadoop      

配置檔案的修改

以下操作都在node1機器上進行

修改core-site.xml

<configuration>

<!-- 指定NameNode的HA高可用的zk位址  -->

 <property>

   <name>ha.zookeeper.quorum</name>

   <value>node1:2181,node2:2181,node3:2181</value>

 </property>

 <!-- 指定HDFS通路的域名位址  -->

 <property>

   <name>fs.defaultFS</name>

   <value>hdfs://ns</value>

 </property>

 <!-- 臨時檔案存儲目錄  -->

<property>

  <name>hadoop.tmp.dir</name>

  <value>/opt/server/hadoop-2.7.5/data/tmp</value>

</property>

 <!-- 開啟hdfs垃圾箱機制,指定垃圾箱中的檔案七天之後就徹底删掉

機關為分鐘

 -->

<property>

 <name>fs.trash.interval</name>

 <value>10080</value>

</property>

</configuration>      

修改hdfs-site.xml

<configuration>

<!-- 指定NameNode的HA高可用的zk位址  -->

 <property>

   <name>ha.zookeeper.quorum</name>

   <value>node1:2181,node2:2181,node3:2181</value>

 </property>

 <!-- 指定HDFS通路的域名位址  -->

 <property>

   <name>fs.defaultFS</name>

   <value>hdfs://ns</value>

 </property>

 <!-- 臨時檔案存儲目錄  -->

<property>

  <name>hadoop.tmp.dir</name>

  <value>/opt/server/hadoop-2.7.5/data/tmp</value>

</property>

 <!-- 開啟hdfs垃圾箱機制,指定垃圾箱中的檔案七天之後就徹底删掉

機關為分鐘

 -->

<property>

 <name>fs.trash.interval</name>

 <value>10080</value>

</property>

</configuration>      

修改yarn-site.xml,注意node03與node02配置不同

<configuration>

<!-- Site specific YARN configuration properties -->

<!-- 是否啟用日志聚合.應用程式完成後,日志彙總收集每個容器的日志,這些日志移動到檔案系統,例如HDFS. -->

<!-- 使用者可以通過配置"yarn.nodemanager.remote-app-log-dir"、"yarn.nodemanager.remote-app-log-dir-suffix"來确定日志移動到的位置 -->

<!-- 使用者可以通過應用程式時間伺服器通路日志 -->



<!-- 啟用日志聚合功能,應用程式完成後,收集各個節點的日志到一起便于檢視 -->

<property>

<name>yarn.log-aggregation-enable</name>

<value>true</value>

</property>

 



<!--開啟resource manager HA,預設為false--> 

<property>

        <name>yarn.resourcemanager.ha.enabled</name>

        <value>true</value>

</property>

<!-- 叢集的Id,使用該值確定RM不會做為其它叢集的active -->

<property>

        <name>yarn.resourcemanager.cluster-id</name>

        <value>mycluster</value>

</property>

<!--配置resource manager  命名-->

<property>

        <name>yarn.resourcemanager.ha.rm-ids</name>

        <value>rm1,rm2</value>

</property>

<!-- 配置第一台機器的resourceManager -->

<property>

        <name>yarn.resourcemanager.hostname.rm1</name>

        <value>node2</value>

</property>

<!-- 配置第二台機器的resourceManager -->

<property>

        <name>yarn.resourcemanager.hostname.rm2</name>

        <value>node3</value>

</property>



<!-- 配置第一台機器的resourceManager通信位址 -->

<property>

        <name>yarn.resourcemanager.address.rm1</name>

        <value>node2:8032</value>

</property>

<property>

        <name>yarn.resourcemanager.scheduler.address.rm1</name>

        <value>node2:8030</value>

</property>

<property>

        <name>yarn.resourcemanager.resource-tracker.address.rm1</name>

        <value>node2:8031</value>

</property>

<property>

        <name>yarn.resourcemanager.admin.address.rm1</name>

        <value>node2:8033</value>

</property>

<property>

        <name>yarn.resourcemanager.webapp.address.rm1</name>

        <value>node2:8088</value>

</property>



<!-- 配置第二台機器的resourceManager通信位址 -->

<property>

        <name>yarn.resourcemanager.address.rm2</name>

        <value>node3:8032</value>

</property>

<property>

        <name>yarn.resourcemanager.scheduler.address.rm2</name>

        <value>node3:8030</value>

</property>

<property>

        <name>yarn.resourcemanager.resource-tracker.address.rm2</name>

        <value>node3:8031</value>

</property>

<property>

        <name>yarn.resourcemanager.admin.address.rm2</name>

        <value>node3:8033</value>

</property>

<property>

        <name>yarn.resourcemanager.webapp.address.rm2</name>

        <value>node3:8088</value>

</property>





<!--開啟resourcemanager自動恢複功能-->

<property>

        <name>yarn.resourcemanager.recovery.enabled</name>

        <value>true</value>

</property>

<!--在node2上配置rm1,在node3上配置rm2,注意:一般都喜歡把配置好的檔案遠端複制到其它機器上,但這個在YARN的另一個機器上一定要修改,其他機器上不配置此項-->

<property>       

<name>yarn.resourcemanager.ha.id</name>

<value>rm1</value>

       <description>If we want to launch more than one RM in single node, we need this configuration</description>

</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>node2:2181,node3:2181,node1:2181</value>

        <description>For multiple zk services, separate them with comma</description>

</property>

<!--開啟resourcemanager故障自動切換,指定機器--> 

<property>

        <name>yarn.resourcemanager.ha.automatic-failover.enabled</name>

        <value>true</value>

        <description>Enable automatic failover; By default, it is enabled only when HA is enabled.</description>

</property>

<property>

        <name>yarn.client.failover-proxy-provider</name>

        <value>org.apache.hadoop.yarn.client.ConfiguredRMFailoverProxyProvider</value>

</property>

<!-- 允許配置設定給一個任務最大的CPU核數,預設是8 -->

<property>

        <name>yarn.nodemanager.resource.cpu-vcores</name>

        <value>2</value>

</property>

<!-- 每個節點可用記憶體,機關MB -->

<property>

        <name>yarn.nodemanager.resource.memory-mb</name>

        <value>2048</value>

</property>

<!-- 單個任務可申請最少記憶體,預設1024MB -->

<property>

        <name>yarn.scheduler.minimum-allocation-mb</name>

        <value>1024</value>

</property>

<!-- 單個任務可申請最大記憶體,預設8192MB -->

<property>

        <name>yarn.scheduler.maximum-allocation-mb</name>

        <value>2048</value>

</property>

<!--多長時間聚合删除一次日志 此處-->

<property>

        <name>yarn.log-aggregation.retain-seconds</name>

        <value>2592000</value><!--30 day-->

</property>

<!--時間在幾秒鐘内保留使用者日志。隻适用于如果日志聚合是禁用的-->

<property>

        <name>yarn.nodemanager.log.retain-seconds</name>

        <value>604800</value><!--7 day-->

</property>

<!--指定檔案壓縮類型用于壓縮彙總日志-->

<property>

        <name>yarn.nodemanager.log-aggregation.compression-type</name>

        <value>gz</value>

</property>

<!-- nodemanager本地檔案存儲目錄-->

<property>

        <name>yarn.nodemanager.local-dirs</name>

        <value>/opt/server/hadoop-2.7.5/yarn/local</value>

</property>

<!-- resourceManager  儲存最大的任務完成個數 -->

<property>

        <name>yarn.resourcemanager.max-completed-applications</name>

        <value>1000</value>

</property>

<!-- 逗号隔開的服務清單,清單名稱應該隻包含a-zA-Z0-9_,不能以數字開始-->

<property>

        <name>yarn.nodemanager.aux-services</name>

        <value>mapreduce_shuffle</value>

</property>



<!--rm失聯後重新連結的時間--> 

<property>

        <name>yarn.resourcemanager.connect.retry-interval.ms</name>

        <value>2000</value>

</property>

</configuration>      

修改mapred-site.xml

<configuration>

<!--指定運作mapreduce的環境是yarn -->

<property>

        <name>mapreduce.framework.name</name>

        <value>yarn</value>

</property>

<!-- MapReduce JobHistory Server IPC host:port -->

<property>

        <name>mapreduce.jobhistory.address</name>

        <value>node3:10020</value>

</property>

<!-- MapReduce JobHistory Server Web UI host:port -->

<property>

        <name>mapreduce.jobhistory.webapp.address</name>

        <value>node0:19888</value>

</property>

<!-- The directory where MapReduce stores control files.預設 ${hadoop.tmp.dir}/mapred/system -->

<property>

        <name>mapreduce.jobtracker.system.dir</name>

        <value>/opt/server/hadoop-2.7.5/data/system/jobtracker</value>

</property>

<!-- The amount of memory to request from the scheduler for each map task. 預設 1024-->

<property>

        <name>mapreduce.map.memory.mb</name>

        <value>1024</value>

</property>

<!-- <property>

                <name>mapreduce.map.java.opts</name>

                <value>-Xmx1024m</value>

        </property> -->

<!-- The amount of memory to request from the scheduler for each reduce task. 預設 1024-->

<property>

        <name>mapreduce.reduce.memory.mb</name>

        <value>1024</value>

</property>

<!-- <property>

               <name>mapreduce.reduce.java.opts</name>

               <value>-Xmx2048m</value>

        </property> -->

<!-- 用于存儲檔案的緩存記憶體的總數量,以兆位元組為機關。預設情況下,配置設定給每個合并流1MB,給個合并流應該尋求最小化。預設值100-->

<property>

        <name>mapreduce.task.io.sort.mb</name>

        <value>100</value>

</property>

 

<!-- <property>

        <name>mapreduce.jobtracker.handler.count</name>

        <value>25</value>

        </property>-->

<!-- 整理檔案時用于合并的流的數量。這決定了打開的檔案句柄的數量。預設值10-->

<property>

        <name>mapreduce.task.io.sort.factor</name>

        <value>10</value>

</property>

<!-- 預設的并行傳輸量由reduce在copy(shuffle)階段。預設值5-->

<property>

        <name>mapreduce.reduce.shuffle.parallelcopies</name>

        <value>15</value>

</property>

<property>

        <name>yarn.app.mapreduce.am.command-opts</name>

        <value>-Xmx1024m</value>

</property>

<!-- MR AppMaster所需的記憶體總量。預設值1536-->

<property>

        <name>yarn.app.mapreduce.am.resource.mb</name>

        <value>1536</value>

</property>

<!-- MapReduce存儲中間資料檔案的本地目錄。目錄不存在則被忽略。預設值${hadoop.tmp.dir}/mapred/local-->

<property>

        <name>mapreduce.cluster.local.dir</name>

        <value>/opt/server/hadoop-2.7.5/data/system/local</value>

</property>

</configuration>      

修改slaves

node1

node2

node3      

修改hadoop-env.sh

export JAVA_HOME=/export/server/jdk1.8.0_241      

叢集啟動過程

将第一台機器的安裝包發送到其他機器上

第一台機器執行以下指令:

cd /opt/server

scp -r hadoop-2.7.5/ node2:$PWD

scp -r hadoop-2.7.5/ node3:$PWD      

三台機器上共同建立目錄

三台機器執行以下指令

mkdir -p /opt/server/hadoop-2.7.5/data/dfs/nn/name

mkdir -p /opt/server/hadoop-2.7.5/data/dfs/nn/edits

mkdir -p /opt/server/hadoop-2.7.5/data/dfs/nn/name

mkdir -p /opt/server/hadoop-2.7.5/data/dfs/nn/edits      

更改node3的rm2

第二台機器執行以下指令

vim yarn-site.xml      

 <!--在node2上配置rm1,在node3上配置rm2,注意:一般都喜歡把配置好的檔案遠端複制到其它機器上,

但這個在YARN的另一個機器上一定要修改,其他機器上不配置此項

注意我們現在有兩個resourceManager   第二台是rm1 第三台是rm2

這個配置一定要記得去node3上面改好

-->

<property>       

<name>yarn.resourcemanager.ha.id</name>

<value>rm2</value>

   <description>If we want to launch more than one RM in single node, we need this configuration</description>

</property>      

啟動HDFS過程

node1機器執行以下指令

cd   /opt/server/hadoop-2.7.5

bin/hdfs zkfc -formatZK

sbin/hadoop-daemons.sh start journalnode

bin/hdfs namenode -format

bin/hdfs namenode -initializeSharedEdits -force

sbin/start-dfs.sh      

node2上面執行

cd   /opt/server/hadoop-2.7.5

bin/hdfs namenode -bootstrapStandby

sbin/hadoop-daemon.sh start namenode      

啟動yarn過程

node2上執行

cd   /opt/server/hadoop-2.7.5

sbin/start-yarn.sh      

node3上面執行

cd   /export/servers/hadoop-2.7.5

sbin/start-yarn.sh      

檢視resourceManager狀态

node2上面執行

cd   /opt/server/hadoop-2.7.5

bin/yarn rmadmin -getServiceState rm1      

node3上面執行

cd   /opt/server/hadoop-2.7.5

bin/yarn rmadmin -getServiceState rm2      

node3啟動jobHistory

node3機器執行以下指令啟動jobHistory

cd /opt/server/hadoop-2.7.5

sbin/mr-jobhistory-daemon.sh start historyserver      

hdfs狀态檢視

node1機器檢視hdfs狀态

​​http://192.168.88.161:50070/dfshealth.html#tab-overview​​

node2機器檢視hdfs狀态

​​http://192.168.88.162:50070/dfshealth.html#tab-overview​​

yarn叢集通路檢視

曆史任務浏覽界面

  • 📢歡迎點贊 👍 收藏 ⭐留言 📝 如有錯誤敬請指正!
  • 📢本文由 Lansonli 原創
  • 📢停下休息的時候不要忘了别人還在奔跑,希望大家抓緊時間學習,全力奔赴更美好的生活✨

繼續閱讀