1. 下載下傳Hadoop
在 Apache的 Hadoop項目界面找到hadoop的 hadoop下載下傳位址
http://hadoop.apache.org/releases.html
因為直接從Apache官方下載下傳檔案速度很慢,是以在表格下面選擇别的鏡像站位址。
在彈出的界面中會推薦一個下載下傳速度很快的國内鏡像站。
選擇其中某個版本的hadoop下載下傳,因為現在市面上絕大部分的學習資料都是以hadoop 2.x 為基礎,是以推薦大家下載下傳hadoop 2.x的版本。
沒有安裝圖形界面的系統可以直接在指令行中使用下面的wget指令下載下傳檔案
2. 配置ssh免密碼登入
以下操作均在root使用者中進行,centos7 可以在指令行中使用 su 指令,輸入密碼後進入root使用者。并且預設centos系統中已經正确的配置好了java環境
- 進入目前使用者目錄,找到 .ssh 檔案夾
cd ~ //切換到目前使用者的使用者目錄下
ls -all //檢視目前使用者目錄下的所有檔案
檢視目前使用者的目錄下是否有 .ssh 檔案夾,如果沒有就自己建立一個
- 生成私鑰和公鑰
cd .ssh
ssh-keygen -t rsa // 生成公鑰和私鑰,期間系統會詢問密鑰的儲存位置,直接一路回車确認即可
cp id_rsa.pub authorized_keys // 複制公鑰
- 驗證ssh免密碼登入是否成功
ssh localhost //ssh登入本機,第一次登入可能需要輸入一次密碼,退出之後再登入就不需要了
exit
如果在輸入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
之後可以輸入指令驗證配置是否正确生效
- 修改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是否開啟
在centos系統的浏覽器中輸入 http://localhost:50070 檢視運作在本機上的hadoop的運作狀态
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
在浏覽器中輸入 http://localhost:8088 檢視YARN管理的叢集狀态
5. 運作MapReduce示例(Wordcount)
Wordcount是MapReduce的入門示例程式,相當于我們在學某個程式設計語言時寫的Hello World示例一樣。這個程式可以統計某個檔案中,各個單詞出現的次數。Wordcount程式的jar包已經放置在hadoop安裝目錄下的 /share/hadoop/mapreduce 檔案夾中。
本次我們使用hadoop安裝包下自帶的幾個檔案,測試Wordcount程式的運作效果。
cd /opt/hadoop-.
ls -all
可以看到在hadoop的安裝目錄下有幾個txt檔案,我們使用這幾個檔案中的某個檔案作為Wordcount的測試檔案。
- 上傳檔案到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 檔案夾下面。
- 運作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- //檢視程式最終的運作結果
可以看到,在運作Wordcount程式之後,HDFS上面産生了很多的檔案,其中 /output/part-r-00000 檔案就是程式最終的運作結果。檢視該檔案可以看到:
這說明已經成功的運作了Wordcount示例程式。