Hadoop是一個由Apache基金會開發的分散式系統架構,簡稱HDFS,具有高容錯性、可伸縮性等特點,並且可以部署在低配置的硬體上;同時,提供了高吞吐量的資料訪問效能,適用於超大資料集的應用程式,以及通過叢集拓撲高效快速的處理資料的能力。

本文主要介紹一下Hadoop的開發環境搭建,平臺是Mac系統。

下載原始碼

在搭建環境之前,需要先下載hadoop的binary,可以把source也下載下來,方便以後閱讀。下載後進行解壓:

$ tar -zxvf hadoop-2.8.0.tar.gz

配置hadoop

hadoop的配置稍許麻煩,暫時沒有一鍵化配置的功能;另外,hadoop是基於java開發的,所需需要安裝java開發環境,如果沒有安裝,請參考其它資料先安裝java開發環境。設定好java開發環境後,再設定hadoop的開發環境。

hadoop的配置檔案主要都在etc/hadoop目錄下,可以配置hdfsyarnmapreduce等,下面具體介紹:

1. 新增hadoop環境變數

新增的方式很多,可以修改系統級的檔案,如:/etc/bashrc/etc/profile,也可以修改當然使用者的檔案,比如:~/.bash_profile(shell用的是bash)、~/.zshrc(shell用的是zsh),新增如下程式碼即可

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home
export HADOOP_HOME=/Users/gandalf/Documents/kelvin/Hadoop/hadoop-2.8.0

export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

配置完成後,需要設定其生效,安裝zsh的配置設定:

$ source ~/.zshrc

設定完成後,如果出現下面資訊,表示hadoop開發環境變數設定好了

$ hadoop version
Hadoop 2.8.0
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r 91f2b7a13d1e97be65db92ddabc627cc29ac0009
Compiled by jdu on 2017-03-17T04:12Z
Compiled with protoc 2.5.0
From source with checksum 60125541c2b3e266cbf3becc5bda666
This command was run using /Users/gandalf/Documents/kelvin/Hadoop/hadoop-2.8.0/share/hadoop/common/hadoop-common-2.8.0.jar

2. 修改hadoop-env.sh

直接設定JAVA_HOME的路徑,不要用$JAVA_HOME代替,因為hadoop對系統變數的支援不是太好

# The java implementation to use.
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home

3. 修改core-site.xml

設定hadoop的臨時目錄及檔案系統,其中localhost:9000表示本地主機,如果是遠端主機,則需要把localhost修改為相應的IP地址,如果填寫遠端主機的域名,則需要到/etc/hosts檔案中做DNS對映

<configuration>
    <!--設定臨時目錄-->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/Users/gandalf/Documents/kelvin/Hadoop/hadoop-2.8.0/data</value>
    </property>
    <!--設定檔案系統-->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

4. 配置hdfs-site.xml

由於是一臺Mac電腦,所以資料的副本設定為1,預設是3

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

5. 配置mapred-site.xml

由於hadoop的根目錄下的etc/hadoop目錄下沒有mapred-site.xml檔案,所以需要建立該檔案,但是我們可以直接把etc/hadoop目錄下的mapred-site.xml.template檔案重新命名為mapred-site.xml,然後配置資料處理的框架為yarn

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

6. 配置yarn-site.xml

配置資料處理框架yarn

<configuration>

<!-- Site specific YARN configuration properties -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>localhost:9000</value>
    </property>
</configuration>

啟動hadoop

配置完hadoop後,就可以啟動hadoop

1. 啟動namenode

$ hadoop namenode -format

如果出現如下圖片提示,表示namenode啟動成功

圖1

需要注意的是,如果有錯誤,請先檢查是不是hadoop安裝包是32-bit,而計算機系統是64-bit,造成不匹配

2. 啟動hdfs

啟動hdfs,有可能需要輸入3次密碼

$ start-dfs.sh

如果出現如下提示,表示hadoop無法遠端登入主機,需要開放許可權

圖2

具體開放許可權的步驟如下,先到系統設定裡的共享裡,然後允許遠端登入,最後添加當前的使用者即可:

圖3

圖4

如果不想每次啟動都輸入3次密碼,可以新增ssh的公鑰到authorized_keys檔案中

// 新增ssh的公鑰到authorized_keys檔案中
$ mkdir ~/.ssh && cd ~/.ssh
$ ssh-keygen -t rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

3. 啟動yarn

啟動資料處理mapreduce框架yarn

$ start-yarn.sh

如果執行jps命令出現如下提示,表示hadoop啟動完成

圖5

4. 瀏覽器檢視hadoop

我們也可以通過瀏覽器檢視hadoop的詳細資訊,開啟連結:

http://localhost:50070/

然後在如下介面,我們就可以檢視hadoop的具體資訊了

圖6

hadoop的開發環境搭建如上,如有不足之處,歡迎指出,共同進步