1. 程式人生 > >Hadoop2.7.2之叢集搭建(單機)

Hadoop2.7.2之叢集搭建(單機)

下載安裝Hadoop

1、下載地址

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

這裡寫圖片描述

我下載的是2.7.2,官網在2.5之後預設提供的就是64位的,這裡直接下載下來用即可

2、安裝Hadoop

tar -zxvf hadoop-2.7.2.tar.gz -C /opt/soft
cd /opt/soft/hadoop-2.7.2/lib/native
file libhadoop.so.1.0.0

這裡寫圖片描述

4、配置/etc/hosts

vi /etc/hosts

這裡寫圖片描述

配置啟動Hadoop

1、修改hadoop2.7.2/etc/hadoop/hadoop-env.sh指定JAVA_HOME

# The java implementation to use.
export JAVA_HOME=/opt/soft/jdk1.8.0_91

2、修改hdfs的配置檔案

修改hadoop2.7.2/etc/hadoop/core-site.xml 如下:

<configuration>
    <!-- 指定HDFS老大(namenode)的通訊地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://singlenode:9000</value
>
</property> <!-- 指定hadoop執行時產生檔案的儲存路徑 --> <property> <name>hadoop.tmp.dir</name> <value>/opt/soft/hadoop-2.7.2/tmp</value> </property> </configuration>

這裡fs.defaultFS的value最好是寫本機的靜態IP當然寫本機主機名,再配置hosts是最好的,如果用localhost,然後在windows用java操作hdfs的時候,會連線不上主機。

修改hadoop2.7.2/etc/hadoop/hdfs-site.xml 如下:

<configuration>
    <!-- 設定hdfs副本數量 -->
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

3、配置SSH免密碼登入

配置前:

ssh localhost

這裡寫圖片描述

會出現如上效果,要求我輸入本機登入密碼

配置方法:

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys

配置後,不用密碼可以直接登入了

這裡寫圖片描述

4、hdfs啟動與停止

第一次啟動得先格式化(最好不要複製):

./bin/hdfs namenode –format

啟動hdfs

./sbin/start-dfs.sh

看到如下效果表示成功:

這裡寫圖片描述

測試用瀏覽器訪問:(如果沒響應,則開發50070埠)

firewall-cmd --zone=public --add-port=50070/tcp --permanent
firewall-cmd --reload
http://192.168.2.100:50070/

效果如下:
這裡寫圖片描述

停止hdfs

sbin/stop-dfs.sh

5、常用操作:
HDFS shell
檢視幫助

hadoop fs -help <cmd>

上傳

hadoop fs -put <linux上檔案>  <hdfs上的路徑>

檢視檔案內容

hadoop fs -cat <hdfs上的路徑>

檢視檔案列表

hadoop fs -ls /

下載檔案

hadoop fs -get <hdfs上的路徑>  <linux上檔案>

上傳檔案測試
建立一個words.txt 檔案並上傳

vi words.txt

Hello World
Hello Tom
Hello Jack
Hello Hadoop
Bye   hadoop

將words.txt上傳到hdfs的根目錄

bin/hadoop fs -put words.txt /

這裡寫圖片描述

這裡的words.txt就是我們上傳的words.txt

配置啟動YARN

這裡寫圖片描述

從上圖看看出我們的MapReduce是執行在YARN上的,而YARN是執行在HDFS之上的,我們已經安裝了HDFS現在來配置啟動YARN,然後執行一個WordCount程式。

1、配置etc/hadoop/mapred-site.xml:

mv mapred-site.xml.template mapred-site.xml

<configuration>
    <!-- 通知框架MR使用YARN -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

2、配置etc/hadoop/yarn-site.xml:

<configuration>
    <!-- reducer取資料的方式是mapreduce_shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

3、YARN的啟動與停止

啟動

./sbin/start-yarn.sh

如下:

這裡寫圖片描述

測試用瀏覽器訪問:(如果沒響應,則開發8088埠)

這裡寫圖片描述

停止

sbin/stop-yarn.sh

現在我們的hdfs和yarn都執行成功了,我們開始執行一個WordCount的MP程式來測試我們的單機模式叢集是否可以正常工作。

執行一個簡單的MP程式

我們的MapperReduce將會跑在YARN上,結果將存在HDFS上:

./bin/hadoop jar /opt/soft/hadoop-2.7.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar  wordcount hdfs://localhost:9000/words.txt hdfs://localhost:9000/out

用hadoop執行一個叫 hadoop-mapreduce-examples.jar 的 wordcount 方法,其中輸入引數為 hdfs上根目錄的words.txt 檔案,而輸出路徑為 hdfs跟目錄下的out目錄,執行過程如下:

這裡寫圖片描述

我們通過瀏覽器訪問和下載檢視結果:

這裡寫圖片描述

這裡下載的時候會跳轉到另一個地址如下:

http://singlenode:50075/webhdfs/v1/out/part-r-00000?op=OPEN&namenoderpcaddress=localhost:9000&offset=0

1、需把singlenode換成192.168.2.100或是在hosts里加入 192.168.2.100 singlenode 隱射關係

2、需開放50075埠。

下載下來結果如下:

Bye 1
Hadoop  2
Hello   4
Jack    1
Tom 1
World   1

說明我們已經計算出了,單詞出現的次數。

至此,我們Hadoop的單機模式搭建成功。