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目錄下,可以配置hdfs、yarn、mapreduce等,下面具體介紹:
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啟動成功

需要注意的是,如果有錯誤,請先檢查是不是hadoop安裝包是32-bit,而計算機系統是64-bit,造成不匹配
2. 啟動hdfs
啟動hdfs,有可能需要輸入3次密碼
$ start-dfs.sh
如果出現如下提示,表示hadoop無法遠程登錄主機,需要開放權限

具體開放權限的步驟如下,先到系統設置里的共享里,然后允許遠程登錄,最后添加當前的用戶即可:


如果不想每次啟動都輸入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啟動完成

4. 瀏覽器查看hadoop
我們也可以通過瀏覽器查看hadoop的詳細信息,打開鏈接:
http://localhost:50070/
然后在如下界面,我們就可以查看hadoop的具體信息了

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