1. 程式人生 > >初識Hadoop之Hadoop單機版搭建

初識Hadoop之Hadoop單機版搭建

最近閒來無事,和朋友志聲大神一起想學習Hadoop,最晚弄機器的弄到兩點多,今天動手和志聲一起安裝Hadoop的環境,剛開始也是一頭霧水啊,Hadoop官網 的教程我也是醉了,說的牛頭不對馬嘴,最後只能通過各種百度解決了問題,最後把安裝的一些操作都記錄下來,希望可以幫助到後來人

環境

這裡我們使用了兩臺騰訊雲的機器以及一臺阿里雲的機器,本來是準備搭建一個Hadoop叢集的,但是由於兩個人都沒有任何的大資料的經驗,所以先在我的阿里雲機器上部署了一套單機版的Hadoop測試一下,看看能不能行
* 作業系統:centOS 7.3
* JAVA版本:jdk1.8
* Hadoop版本:Hadoop2.9.0(binary)

開始安裝

  • ### 安裝java環境變數
    • 先下載java版本,如果機器上自帶了openjdk請先解除安裝自帶的openJDK
    • 下載好後將jdk放到自己的機器上,本人放在 /user/local/java目錄下
    • 解壓tar -zxvf yourjavajdkname
    • 解壓後就可以在當前目錄下看到解壓的檔案夾了,然後配置Java的環境變數 sudo vim + /etc/profile
    • 在檔案最後加上以下程式碼

      export JAVA_HOME=/usr/local/java/java_1.8
      export PATH=$PATH:$JAVA_HOME/bin
      export CLASSPATH=.:$JAVA_HOME/lib

      注:java1.8是我本人將jdk解壓後的資料夾重新命名為java_1.8
    • source /etc/profile編譯一下
    • 輸入java -version看看有沒有版本資訊輸出,有的話就是安裝成功了
    • ### 配置hosts埠
    • sudo vim + /etc/hosts
    • 在檔案末尾加上自己機器的IP和別名為了以後做叢集做準備
    • ### 配置SSH免密登入
      注:同樣是為了以後做叢集做準備
    • 安裝expect命令 : yum -y install expect
    • 下載ssh_p2p.zip放在任意目錄下
    • unzip ssh_p2p 如果沒有unzip命令,先安裝unzip
    • 安裝unzip命令,如果已經有了,可以跳過這一步,yum -y install unzip
    • 修改resource的ip值vim /ssh_p2p/deploy_data/resource
    • 新增如下程式碼:

      adress=(
      "IP,登入賬號,登入密碼,free"
      "IP,登入賬號,登入密碼,free"
      "IP,登入賬號,登入密碼,free"
      )
    • 修改start.sh的執行許可權
      chmod u+x start.sh
    • 執行 ./start.sh
    • 測試: ssh ip(測試是否可以登入)

到這裡我們為後面做安裝叢集的準備就好了

  • 配置Hadoop

    • 將下載好的Hadoop上傳到我們的機器,然後解壓,我本人在/usr/local/目錄下新建了一個hadoop目錄,然後把下載好的壓縮包上傳到/usr/local/hadoop目錄下
    • 解壓 tar -zxvf hadoopfilename
    • 然後修改hadoop解壓目錄下的/etc/hadoop/hadoop-env.sh檔案 sudo vim + /usr/local/hadoop/hadoop-2.9.0/etc/hadoop
    • 將Java home的路徑配置進去,如果不知道或者不記得自己的JavaHome路徑可以用下面的命令,echo ${JAVA_HOME}輸出javaHome的路徑,得到了javaHome的路徑後,新增下面程式碼
      export JAVA_HOME = /usr/local/java/java_1.8,這是我本人的JavaHome路徑,
      *然後配置Hadoop的環境變數,和我們配置java的環境變數一樣,使用以下命令
      sudo vim + /etc/profile,

    • 新增以下程式碼:

      export HADOOP_HOME= /usr/local/hadoop/hadoop-2.9.0/
      export PATH=$PATH:$HADOOP_HOME/bin
    • source /etc/profile編譯讓我們剛剛修改生效

    • 修改/usr/local/hadoop/hadoop-2.9.0/etc/hadoop/core-site.xml檔案

      <configuration>  
      <!-- 指定HDFS namenode 的通訊地址 -->  
      <property>  
          <name>fs.defaultFS</name>  
          <value>hdfs://localhost:9000</value>  
      </property>  
      <!-- 指定hadoop執行時產生檔案的儲存路徑 -->  
      <property>  
          <name>hadoop.tmp.dir</name>  
          <value>/usr/local/hadoop/hadoop-2.9.0/tmp</value>  
      </property>  
      </configuration>
    • tmp資料夾是我自己建立的,hadoop不自帶,特此說明

    • fs.defaultFS直接用localhost就行,如果重新命名了主機名,也可以用重新命名的。比如說你重新命名為xxxx那麼就用xxxx替代localhost
    • 修改/usr/local/hadoop/hadoop-2.9.0/etc/hadoop/hdfs-site.xml

      <configuration>  
      <property>  
          <name>dfs.name.dir</name>  
          <value>/usr/hadoop/hdfs/name</value>  
          <description>namenode上儲存hdfs名字空間元資料 </description>   
      </property>  
      
      <property>  
          <name>dfs.data.dir</name>  
          <value>/usr/hadoop/hdfs/data</value>  
          <description>datanode上資料塊的物理儲存位置</description>  
      </property>  
      
      <!-- 設定hdfs副本數量 -->  
      <property>  
          <name>dfs.replication</name>
          <value>1</value>  
      </property>  
      </configuration>  
    • SSH免密登入,這裡的和SSH免密登入和前面的SSH免密登入互不影響,不衝突,如果這裡不配置的話,後面啟動的時候也會提示你是否要連線,所以還是配置比較好

      ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa  
      cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys  
      chmod 0600 ~/.ssh/authorized_keys
    • HDFS的啟動與停止(第一次啟動需要格式化)

      • 啟動命令

        cd /usr/local/hadoop/hadoop-2.9.0
        ./bin/hdfs namenode -format
        ./sbin/start-dfs.sh
      • 停止命令

        ./sbin/stop-dfs.sh 
    • 然後在瀏覽器中輸入http://yourIP:50070就可以看到效果了,如果沒有的話,證明上面沒有配置好,
  • yarn配置

    在hadoop中,預設mapred-site.xml的名字是mapred-site.xm.template,所以我們要先用MV命令修改名字,

    mv /usr/local/hadoop/hadoop-2.9.0/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/hadoop-2.9.0/etc/hadoop/mapred-site.xml
    • 編輯mapred-site.xml
      sudo vim + mapred-site.xml
        <configuration>  
        <!-- 通知框架MR使用YARN -->  
        <property>  
             <name>mapreduce.framework.name</name>  
            <value>yarn</value>  
        </property>  
    </configuration>
    • 配置yarn-site.xml

      <configuration>  
      <!-- reducer取資料的方式是mapreduce_shuffle -->  
          <property>  
              <name>yarn.nodemanager.aux-services</name>  
              <value>mapreduce_shuffle</value>  
          </property>  
      </configuration>
    • 啟動和停止yarn

       cd /usr/local/hadoop/hadoop-2.9.0
      ./sbin/start-yarn.sh
    • 停止yarn

      ./sbin/stop-yarn.sh

到這裡Hadoop配置工作就完成了,叢集的配置以後配置成功了再寫成教程發出來,最後感謝志聲大神,隨便奉上我志聲大神的部落格地址裡面可是滿滿的乾貨哦,對於有興趣的朋友可以加入我們的qq群一起探討:528776268,或者關注猿blog公眾號,謝謝大家