天天看點

Centos7搭建Hadoop 2.X僞分布式環境并運作wordcount MapReduce示例

1. 下載下傳Hadoop

在 Apache的 Hadoop項目界面找到hadoop的 hadoop下載下傳位址

http://hadoop.apache.org/releases.html

因為直接從Apache官方下載下傳檔案速度很慢,是以在表格下面選擇别的鏡像站位址。

在彈出的界面中會推薦一個下載下傳速度很快的國内鏡像站。

Centos7搭建Hadoop 2.X僞分布式環境并運作wordcount MapReduce示例
Centos7搭建Hadoop 2.X僞分布式環境并運作wordcount MapReduce示例

選擇其中某個版本的hadoop下載下傳,因為現在市面上絕大部分的學習資料都是以hadoop 2.x 為基礎,是以推薦大家下載下傳hadoop 2.x的版本。

沒有安裝圖形界面的系統可以直接在指令行中使用下面的wget指令下載下傳檔案

2. 配置ssh免密碼登入

以下操作均在root使用者中進行,centos7 可以在指令行中使用 su 指令,輸入密碼後進入root使用者。并且預設centos系統中已經正确的配置好了java環境

- 進入目前使用者目錄,找到 .ssh 檔案夾

cd ~      //切換到目前使用者的使用者目錄下
ls -all   //檢視目前使用者目錄下的所有檔案
           

檢視目前使用者的目錄下是否有 .ssh 檔案夾,如果沒有就自己建立一個

Centos7搭建Hadoop 2.X僞分布式環境并運作wordcount MapReduce示例

- 生成私鑰和公鑰

cd .ssh                 
ssh-keygen -t rsa           //  生成公鑰和私鑰,期間系統會詢問密鑰的儲存位置,直接一路回車确認即可
cp id_rsa.pub authorized_keys           // 複制公鑰
           
Centos7搭建Hadoop 2.X僞分布式環境并運作wordcount MapReduce示例
  • 驗證ssh免密碼登入是否成功
ssh localhost           //ssh登入本機,第一次登入可能需要輸入一次密碼,退出之後再登入就不需要了
exit
           
Centos7搭建Hadoop 2.X僞分布式環境并運作wordcount MapReduce示例

如果在輸入ssh localhost之後出現 報錯:Permission denied (publickey,gssapi-keyex,gssapi-with-mic)

這是因為ssh公鑰驗證失敗導緻的錯誤,這個錯誤的解決辦法可以參照别人的部落格:

以root使用者遠端登入Linux報錯:Permission denied

ssh 公鑰認證報錯:Permission denied解決

3. 安裝配置Hadoop

以下操作均在root使用者中進行,centos7 可以在指令行中使用 su 指令,輸入密碼後進入root使用者。并且預設centos系統中已經正确的配置好了java環境

- 解壓Hadoop源檔案

tar -xzvf hadoop-.tar.gz           //解壓Hadoop安裝包
mv hadoop- /opt                    // 将解壓後的安裝包移動到别的地方,友善管理。
           

- 配置hadoop環境變量

打開檔案之後,在檔案的最後面添加hadoop的配置資訊

export HADOOP_HOME=/opt/hadoop-.            //這個地方記得修改成自己Hadoop安裝目錄的位址
export PATH=$HADOOP_HOME/bin:$PATH               
           

使配置檔案生效

source /etc/profile                             
           

之後可以輸入指令驗證配置是否正确生效

Centos7搭建Hadoop 2.X僞分布式環境并運作wordcount MapReduce示例

- 修改hadoop配置檔案

修改 /opt/hadoop-2.7.6/etc/hadoop/ 下面的hadoop配置檔案 hadoop-env.sh 、hdfs-site.xml 、 core-site.xml 這三個檔案

cd /opt/hadoop-./etc/hadoop/                //切換到Hadoop配置檔案所在的目錄
           

1 . hadoop-env.sh

将檔案中的

修改為

2 . hdfs-site.xml

補充最後的屬性:

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

3 . core-site.xml

在檔案的最後補充:

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>
           

- 啟動hadoop

cd /opt/hadoop-/bin                //切換到Hadoop安裝目錄下的bin目錄
hdfs namenode -format                   //第一次啟動Hadoop,要格式化namenode,之後再啟動就不需要再格式化了
cd /opt/hadoop-/sbin               //切換到Hadoop安裝目錄下的sbin目錄
./start-dfs.sh                          //啟動Hadoop
jps                                     //檢視已經開啟的程序,看namenode,datanode是否開啟
           
Centos7搭建Hadoop 2.X僞分布式環境并運作wordcount MapReduce示例

在centos系統的浏覽器中輸入 http://localhost:50070 檢視運作在本機上的hadoop的運作狀态

Centos7搭建Hadoop 2.X僞分布式環境并運作wordcount MapReduce示例

4. 配置YARN

修改 /opt/hadoop-2.7.6/etc/hadoop 目錄下的YARN配置檔案

cd /opt/hadoop-/etc/hadoop
mv mapred-site.xml.template mapred-site.xml             //首先複制YARN配置檔案
           

1 . mapred-site.xml

在最後修改:

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

2 . yarn-site.xml

在最後修改:

<configuration>
 <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>
           

運作YARN,驗證是否成功

cd /opt/hadoop-/sbin
./start-yarn.sh                 //開啟YARN
jps
           
Centos7搭建Hadoop 2.X僞分布式環境并運作wordcount MapReduce示例

在浏覽器中輸入 http://localhost:8088 檢視YARN管理的叢集狀态

Centos7搭建Hadoop 2.X僞分布式環境并運作wordcount MapReduce示例

5. 運作MapReduce示例(Wordcount)

Wordcount是MapReduce的入門示例程式,相當于我們在學某個程式設計語言時寫的Hello World示例一樣。這個程式可以統計某個檔案中,各個單詞出現的次數。Wordcount程式的jar包已經放置在hadoop安裝目錄下的 /share/hadoop/mapreduce 檔案夾中。

本次我們使用hadoop安裝包下自帶的幾個檔案,測試Wordcount程式的運作效果。

cd /opt/hadoop-.
ls -all 
           

可以看到在hadoop的安裝目錄下有幾個txt檔案,我們使用這幾個檔案中的某個檔案作為Wordcount的測試檔案。

Centos7搭建Hadoop 2.X僞分布式環境并運作wordcount MapReduce示例

- 上傳檔案到HDFS

hadoop fs -mkdir /input                         //在HDFS的根目錄下建立 input 目錄
hadoop fs -put NOTICE.txt /input                //将本地的NOTICE.txt檔案上傳到HDFS的 input 目錄下
hadoop fs -ls -R /                              //檢視檔案是否成功上傳到HDFS上面
           

可以看到,已經成功的在本機的HDFS的根目錄下建立了 input 檔案夾,并将NOTICE.txt檔案上傳到了HDFS上的 input 檔案夾下面。

Centos7搭建Hadoop 2.X僞分布式環境并運作wordcount MapReduce示例
  • 運作Wordcount示例程式

使用hadoop jar 指令, 後面先指定程式雖用jar包的路徑,後面是要運作的程式的名稱,最後是輸入檔案和輸出路徑,這個指令要根據自己本機Hadoop的配置做相應的修改。

hadoop jar /opt/hadoop-/share/hadoop/mapreduce/hadoop-mapreduce-examples-.jar wordcount /input /output                
hadoop fs -ls -R /                              //檢視程式運作後産生的檔案
hadoop fs -cat /output/part-r-             //檢視程式最終的運作結果
           
Centos7搭建Hadoop 2.X僞分布式環境并運作wordcount MapReduce示例

可以看到,在運作Wordcount程式之後,HDFS上面産生了很多的檔案,其中 /output/part-r-00000 檔案就是程式最終的運作結果。檢視該檔案可以看到:

Centos7搭建Hadoop 2.X僞分布式環境并運作wordcount MapReduce示例

這說明已經成功的運作了Wordcount示例程式。

繼續閱讀