1. 程式人生 > >hadoop單機部署,用來測試

hadoop單機部署,用來測試

2. Hadoop安裝

  • 2.1 安裝java

    Hadoop是使用JAVA寫的,所以需要先安裝JAVA環境。

    本次安裝的是hadoop-2.7.0,需要JDK 7以上版本。

 yum install java-1.7.0-openjdk
 yum install java-1.7.0-openjdk-devel

安裝後確認

java –version
  • 2.2 需要ssh和rsync

    Linux系統一般都已經預設安裝了,如果沒有,yum安裝。

  • 2.3 下載Hadoop

    從官網下載Hadoop最新版2.7.0

 wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.7
.0/hadoop-2.7.0.tar.gz
將hadoop解壓到/usr/local/下
 cd /usr/local/
 tar zxvf /root/hadoop-2.7.0.tar.gz
  • 2.4 設定環境變數

    設定JAVA的環境變數,JAVA_HOME是JDK的位置

 vi /etc/profile
export PATH=/usr/local/hadoop-2.7.0/bin:$PATH
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91-2.6.2.3.el7.x86_64
讓設定生效
 source /etc/profile
設定Hadoop的JAVA_HOME
cd hadoop-2.7.0/
vi etc/hadoop/hadoop-env.sh
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91-2.6.2.3.el7.x86_64
到此,Hadoop的安裝就算完成了,接下來進行部署和使用。

3. 單機部署

Hadoop部署方式分三種,Standalone mode、Pseudo-Distributed mode、Cluster mode,其中前兩種都是在單機部署。

  • 3.1 standalone mode(本地單獨模式)

    這種模式,僅1個節點執行1個java程序,主要用於除錯。

    • 3.1.1 在Hadoop的安裝目錄下,建立input目錄
 mkdir input
  • 3.1.2 拷貝input檔案到input目錄下
 cp etc/hadoop/*.xml input
  • 3.1.3 執行Hadoop job
 hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.0.jar grep input output 'dfs[a-z.]+'
上面的job是使用hadoop自帶的樣例,在input中統計含有dfs的字串。
  • 3.1.4 確認執行結果
 cat output/*
  • 3.1.5 問題點
WARN io.ReadaheadPool: Failed readahead on ifile
EBADF: Bad file descriptor
如果出現上面的警告,是因為快速讀取檔案的時候,檔案被關閉引起,也可能是其他bug導致,此處忽略。
  • 3.2 pseudo-distributed mode(偽分佈模式)

    這種模式是,1個節點上執行,HDFS daemon的 NameNode 和 DataNode、YARN daemon的 ResourceManger 和 NodeManager,分別啟動單獨的java程序,主要用於除錯。

  • 3.2.1 修改設定檔案

 vi etc/hadoop/core-site.xml
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>
# vi etc/hadoop/hdfs-site.xml
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>
  • 3.2.2 設定本機的無密碼ssh登陸
# ssh-keygen -t rsa
# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  • 3.2.3 執行Hadoop job

    MapReduce v2 叫做YARN,下面分別操作一下這兩種job

  • 3.2.4 執行MapReduce job

  • 3.2.4.1 格式化檔案系統

# hdfs namenode -format
  • 3.2.4.2 啟動名稱節點和資料節點後臺程序
# sbin/start-dfs.sh
在localhost啟動一個1個NameNode和1個DataNode,在0.0.0.0啟動第二個NameNode
  • 3.2.4.3 確認
# jps
  • 3.2.4.4 訪問NameNode的web頁面
http://localhost:50070/
  • 3.2.4.5 建立HDFS
# hdfs dfs -mkdir /user
# hdfs dfs -mkdir /user/test
  • 3.2.4.6 拷貝input檔案到HDFS目錄下
# hdfs dfs -put etc/hadoop /user/test/input
確認,檢視
# hadoop fs -ls /user/test/input
  • 3.2.4.7 執行Hadoop job
# hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.0.jar grep /user/test/input output 'dfs[a-z.]+'
  • 3.2.4.8 確認執行結果
# hdfs dfs -cat output/*
或者從HDFS拷貝到本地檢視
# bin/hdfs dfs -get output output
# cat output/*
  • 3.2.4.9 停止daemon
# sbin/stop-dfs.sh
  • 3.2.5 執行YARN job

    MapReduce V2框架叫YARN

  • 3.2.5.1 修改設定檔案

cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
 vi etc/hadoop/mapred-site.xml
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
 vi etc/hadoop/yarn-site.xml
<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>
  • 3.2.5.2 啟動ResourceManger和NodeManager後臺程序
 sbin/start-yarn.sh
  • 3.2.5.3 確認
# jps
  • 3.2.5.4 訪問ResourceManger的web頁面
http://localhost:8088/
  • 3.2.5.5 執行hadoop job
# hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.0.jar grep /user/test/input output 'dfs[a-z.]+'
  • 3.2.5.6 確認執行結果
# hdfs dfs -cat output/*
執行結果和MapReduce job相同
  • 3.2.5.7 停止daemon
# sbin/stop-yarn.sh
  • 3.2.5.8 問題點

    1. 單節點測試情況下,同樣的input,時間上YARN比MapReduce好像慢很多,檢視日誌發現DataNode上GC發生頻率較高,可能是測試用VM配置比較低有關。

    2. 出現下面警告,是因為沒有啟動job history server

java.io.IOException: java.net.ConnectException: Call From test166/10.86.255.166 to 0.0.0.0:10020 failed on connection exception: java.net.ConnectException: Connection refused;
啟動jobhistory daemon
 sbin/mr-jobhistory-daemon.sh start historyserver
# jps
訪問Job History Server的web頁面
http://localhost:19888/
3. 出現下面警告,DataNode日誌中有錯誤,重啟服務後恢復
java.io.IOException: java.io.IOException: Unknown Job job_1451384977088_0005
  • 3.3 啟動/停止

    也可以用下面的啟動/停止命令,等同於start/stop-dfs.sh + start/stop-yarn.sh

# sbin/start-all.sh

# sbin/stop-all.sh
  • 3.4 日誌

    日誌在Hadoop安裝路徑下的logs目錄下