1. 程式人生 > >hadoop 叢集搭建(詳細)

hadoop 叢集搭建(詳細)

                                   hadoop 叢集搭建

一 、 前提準備

安裝 jdk8,配置環境變數 在 /etc/profile 中 或者 ~/.bash_profile 中都可以

export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
export HADOOP_HOME=/opt/hadoop-2.6.0-cdh5.7.0
export JRE_HOME=${JAVA_HOME}/jre
export MVN_HOME=/usr/apache-maven-3.6.0
export PATH=${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${MVN_HOME}/bin:$PATH
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:/opt/so/jna-4.5.1.jar

http://archive.cloudera.com/cdh5/cdh/5/  在這裡下載  hadoop-2.6.0-cdh5.7.0.tar.gz 壓縮包

必須安裝ssh並且必須執行sshd才能使用管理遠端Hadoop守護程式的Hadoop指令碼(如果要使用可選的啟動和停止指令碼)。此外,建議還安裝pdsh以便更好地進行ssh資源管理。

安裝ssh 可檢視這篇部落格 https://www.cnblogs.com/kaid/p/7985568.html

將hadoop-2.6.0-cdh5.7.0.tar.gz  放到 /opt 目錄下並 tar -zxvf hadoop-2.6.0-cdh5.7.0.tar.gz命令進行解壓

二、hadoop本地模式搭建

(1)配置 /opt/hadoop-2.6.0-cdh5.7.0/etc/hadoop/hadoop_env.sh 的 java_home

# The java implementation to use.
export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64

(2)預設情況下,Hadoop配置為以非分散式模式執行,作為單個Java程序。這對除錯很有用。

以下示例複製解壓縮的conf目錄以用作輸入,然後查詢並顯示給定正則表示式的每個匹配項。輸出將寫入給定的輸出目錄。

  $ mkdir input
  $ cp  /opt/hadoop-2.6.0-cdh5.7.0/etc/hadoop*.xml  input
  $ ./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.1.jar grep input output'dfs [az。] +'
  $ cat output/*
./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar pi 2 3

 

三 、 hadoop 偽分散式搭建

(1)配置 /opt/hadoop-2.6.0-cdh5.7.0/etc/hadoop/hadoop_env.sh 的 java_home

# The java implementation to use.
export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64

(2)配置 core-site.xml

  <property>
        <name>fs.defaultFS</name>
        <value>hdfs://192.168.42.85:8020</value>
    </property>
    <property>
      <name>hadoop.tmp.dir</name>
      <value>/home/hadoop/app/tmp</value>
    </property>

 

 (3)配置hdfs-site.xml  

只有一個節點,就是自己,所以副本數配置為1

    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>

 

(4)配置yarn-site.xml

    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

(5)配置 mapred -site.xml

 <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
  </property>

(6)檢查您是否可以在沒有密碼的情況下ssh到localhost

ssh localhost

如果在沒有輸入密碼不能 ssh到localhost的情況下請執行如下命令: 

  $ ssh-keygen -t rsa -P'' -  f~ / .ssh / id_rsa
  $ cat~ / .ssh / id_rsa.pub >>〜/ .ssh / authorized_keys
  $ chmod 0600~ / .ssh / authorized_keys

(7)啟動hadoop,訪問 http://192.168.42.85:50070   hdfs web 頁面 和 http://192.168.42.85:8088 和 yarn web 頁面 

./bin/hdfs namenode -format
./sbin/start-dfs.sh
./sbin/start-yarn.sh

或者可以使用
./sbin/start-all.sh 相當於 (./sbin/start-dfs.sh 和 ./sbin/start-yarn.sh兩個命令)

四、hadoop 全分散式叢集搭建

準備三臺機器,你可以 建立 一個hadoop 使用者 用來區分 root 使用者

執行 hostname 命令檢視當前主機名 localhost.localdomain

(1)分別修改三臺機器的hostname 和 hosts

執行 hostname 命令檢視當前主機名 localhost.localdomain

機器1:hostname 設定 :

vim /etc/hostname

hadoop000

vim /etc/sysconfig/network
NETWORKING=YES
HOSTNAME=hadoop000

 vim  /etc/hosts ,將localhost.localdomain 替換為 要設定的主機名
192.168.42.85 hadoop000 
192.168.42.71 hadoop001 
192.168.42.70 hadoop002 

機器2:

vim /etc/hostname

hadoop001

vim /etc/sysconfig/network
NETWORKING=YES
HOSTNAME=hadoop001

 vim  /etc/hosts ,將localhost.localdomain 替換為 要設定的主機名
192.168.42.85 hadoop000 
192.168.42.71 hadoop001 
192.168.42.70 hadoop002

 

機器3:

vim /etc/hostname

hadoop002

vim /etc/sysconfig/network
NETWORKING=YES
HOSTNAME=hadoop002

 vim  /etc/hosts ,將localhost.localdomain 替換為 要設定的主機名
192.168.42.85 hadoop000 
192.168.42.71 hadoop001 
192.168.42.70 hadoop002 

(2)ssh 免密碼登入

  $ ssh-keygen -t rsa -P'' -  f~ / .ssh / id_rsa
  $ cat~ / .ssh / id_rsa.pub >>〜/ .ssh / authorized_keys
  $ chmod 0600~ / .ssh / authorized_keys

嘗試 執行

ssh hadoop000
ssh hadoop001
ssh hadoop002​

(3)以hadoop000 機器 為例 進行配置

  • 配置 /opt/hadoop-2.6.0-cdh5.7.0/etc/hadoop/hadoop_env.sh 的 java_home
# The java implementation to use.
export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
  • 配置 core-site.xml
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop000:8020</value>
    </property>
    <property>
      <name>hadoop.tmp.dir</name>
      <value>/home/hadoop/app/tmp</value>
    </property>
  • 配置hdfs-site.xml
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>

    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/home/hadoop/app/tmp/dfs/name</value>
    </property>

    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/home/hadoop/app/tmp/dfs/data</value>
    </property>
  • 配置yarn-site.xml 
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
  
  <property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
  </property>

    //告訴resourceManager 跑在那個機器上
   <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop000</value>
   </property>
  •  配置mapred -site.xml
 <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
  </property>

 <property>
      <name>mapreduce.jobhistory.address</name>
      <value>hadoop000:10020</value>
  </property>


 <property>
      <name>mapreduce.jobhistory.webapp.address</name>
      <value>hadoop000:19888</value>
  </property>

 <property>
      <name>mapreduce.jobhistory.intermediate-done-dir</name>
      <value>/history/done_intermediate</value>
  </property>

 <property>
      <name>mapreduce.jobhistory.done-dir</name>
      <value>/history/done</value>
  </property>
修改 從節點配置  vim slaves
hadoop000
hadoop001
hadoop002

(4)hadoop000機器配置好 了之後,直接將hadoop 分發到 另外兩臺機器上

分發公鑰到叢集中的其他機器上面
ssh-copy-id -i ~/.ssh/id_rsa.pub  hadoop000
ssh-copy-id -i ~/.ssh/id_rsa.pub  hadoop001
ssh-copy-id -i ~/.ssh/id_rsa.pub  hadoop002
分發hadoop安裝包到  hadoop001 和 hadoop2 節點上
scp -r  /opt/hadoop-2.6.0-cdh5.7.0  [email protected]: /opt/
scp -r  /opt/hadoop-2.6.0-cdh5.7.0  [email protected]: /opt/
分發環境變數配置檔案到 hadoop001 和 hadoop002 節點上
scp ~/.bash_profile  [email protected]:~/
scp ~/.bash_profile  [email protected]:~/

(5)啟動hadoop叢集

只需要在 hadoop000上面啟動即可

hdfs namenode -format
./sbin/start-all.sh

如果啟動namenode 或者 datanode 啟動失敗,可以檢視日誌找到報錯原因 或者 刪除 配置在hdfs-site.xml
中的namenode 和datanode 的目錄
cd  /home/hadoop/app/tmp
rm -rf   dfs
cd $HADOOP_HOME
#重新啟動 
hdfs namenode -format
./sbin/start-all.sh

#停止hadoop叢集
./sbin/stop-all.sh

(6)開發 hadoop demo專案 檢視碼雲 地址 https://gitee.com/dzxmy/hadoop-train

(7)更詳細的叢集搭建請參考 https://blog.csdn.net/hliq5399/article/details/78193113#commentBox 

和   https://www.cnblogs.com/smartloli/p/4298430.html

(8)哥不是小蘿莉 大資料 系列教程部落格 https://www.cnblogs.com/smartloli/category/649544.html