Hadoop系列之(一):Hadoop單機部署


1. Hadoop介紹

Hadoop是一個能夠對海量數據進行分布式處理的系統架構。

Hadoop框架的核心是:HDFS和MapReduce。

 

HDFS分布式文件系統為海量的數據提供了存儲,

 

MapReduce分布式處理框架為海量的數據提供了計算。

 

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目錄下

4、后

單機部署主要是為了調試用,生產環境上一般是集群部署,接下來會進行介紹。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM