1. 程式人生 > >搭建Hadoop偽分散式環境(筆記)

搭建Hadoop偽分散式環境(筆記)

軟硬體環境

  • CentOS 7.2 64 位
  • OpenJDK- 1.8
  • Hadoop- 2.7

關於本教程的說明

雲實驗室雲主機自動使用 root 賬戶登入系統,因此本教程中所有的操作都是以 root 使用者來執行的。若要在自己的雲主機上進行本教程的實驗,為了系統安全,建議新建一個賬戶登入後再進行後續操作。

安裝 SSH 客戶端

安裝SSH

安裝SSH:

sudo yum install openssh-clients openssh-server

安裝完成後,可以使用下面命令進行測試:

ssh localhost

輸入 root 賬戶的密碼,如果可以正常登入,則說明SSH安裝沒有問題。測試正常後使用 exit 命令退出ssh。

安裝 JAVA 環境

安裝 JDK

使用 yum 來安裝1.7版本OpenJDK:

sudo yum install java-1.8.0-openjdkjava-1.8.0-openjdk-devel

安裝完成後,輸入 java 和 javac 命令,如果能輸出對應的命令幫助,則表明jdk已正確安裝。

配置 JAVA 環境變數

執行命令:

編輯 ~/.bashrc,在結尾追加:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk

儲存檔案後執行下面命令使 JAVA_HOME 環境變數生效:

source ~/.bashrc

為了檢測系統中 JAVA 環境是否已經正確配置並生效,可以分別執行下面命令:

java -version

$JAVA_HOME/bin/java -version

若兩條命令輸出的結果一致,且都為我們前面安裝的 openjdk-1.8.0 的版本,則表明 JDK 環境已經正確安裝並配置。

安裝 Hadoop

下載 Hadoop

本教程使用 hadoop-2.7 版本,使用 wget 工具線上下載(注:本教程是從清華大學的映象源下載,如果下載失敗或報錯,可以自己在網上找到國內其他一個映象源下載 2.7 版本的 hadoop 即可):

wgethttps://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.7.4/hadoop-2.7.4.tar.gz

安裝 Hadoop

將Hadoop 安裝到 /usr/local 目錄下:

tar -zxf hadoop-2.7.4.tar.gz -C /usr/local

對安裝的目錄進行重新命名,便於後續操作方便:

cd /usr/local

mv ./hadoop-2.7.4/ ./hadoop

檢查Hadoop是否已經正確安裝:

/usr/local/hadoop/bin/hadoop version

如果成功輸出hadoop的版本資訊,表明hadoop已經成功安裝。

Hadoop 偽分散式環境配置

Hadoop偽分散式模式使用多個守護執行緒模擬分佈的偽分佈執行模式。

設定 Hadoop 的環境變數

編輯 ~/.bashrc,在結尾追加如下內容:

export HADOOP_HOME=/usr/local/hadoop

export HADOOP_INSTALL=$HADOOP_HOME

export HADOOP_MAPRED_HOME=$HADOOP_HOME

export HADOOP_COMMON_HOME=$HADOOP_HOME

export HADOOP_HDFS_HOME=$HADOOP_HOME

export YARN_HOME=$HADOOP_HOME

exportHADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

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

使Hadoop環境變數配置生效:

source ~/.bashrc

修改 Hadoop 的配置檔案

Hadoop的配置檔案位於安裝目錄的 /etc/hadoop 目錄下,在本教程中即位於 /url/local/hadoop/etc/hadoop 目錄下,需要修改的配置檔案為如下兩個:

/usr/local/hadoop/etc/hadoop/core-site.xml

/usr/local/hadoop/etc/hadoop/hdfs-site.xml

編輯 core-site.xml,修改<configuration></configuration>節點的內容為如下所示:

示例程式碼:/usr/local/hadoop/etc/hadoop/core-site.xml

<configuration>

   <property>

       <name>hadoop.tmp.dir</name>

       <value>file:/usr/local/hadoop/tmp</value>

       <description>location to store temporary files</description>

   </property>

   <property>

       <name>fs.defaultFS</name>

       <value>hdfs://localhost:9000</value>

   </property>

</configuration>

同理,編輯 hdfs-site.xml,修改<configuration></configuration>節點的內容為如下所示:

示例程式碼:/usr/local/hadoop/etc/hadoop/hdfs-site.xml

<configuration>

   <property>

       <name>dfs.replication</name>

       <value>1</value>

   </property>

   <property>

       <name>dfs.namenode.name.dir</name>

       <value>file:/usr/local/hadoop/tmp/dfs/name</value>

    </property>

   <property>

       <name>dfs.datanode.data.dir</name>

       <value>file:/usr/local/hadoop/tmp/dfs/data</value>

   </property>

</configuration>

格式化 NameNode

格式化NameNode:

/usr/local/hadoop/bin/hdfs namenode -format

在輸出資訊中看到如下資訊,則表示格式化成功:

Storage directory /usr/local/hadoop/tmp/dfs/name has beensuccessfully formatted.

Exiting with status 0

啟動 NameNode 和 DataNode 守護程序

啟動 NameNode 和 DataNode 程序:

/usr/local/hadoop/sbin/start-dfs.sh

執行過程中會提示輸入使用者密碼,輸入 root 使用者密碼即可。另外,啟動時ssh會顯示警告提示是否繼續連線,輸入 yes 即可。

檢查 NameNode 和 DataNode 是否正常啟動:

jps

如果NameNode和DataNode已經正常啟動,會顯示NameNode、DataNode和SecondaryNameNode的程序資訊:

[[email protected]_80_152_centos ~]$ jps

3689 SecondaryNameNode

3520 DataNode

3800 Jps

3393 NameNode

執行 Hadoop 偽分散式例項

Hadoop自帶了豐富的例子,包括 wordcount、grep、sort 等。下面我們將以grep例子為教程,輸入一批檔案,從中篩選出符合正則表示式 dfs[a-z.]+ 的單詞並統計出現的次數。

檢視 Hadoop 自帶的例子

Hadoop 附帶了豐富的例子, 執行下面命令可以檢視:

cd /usr/local/hadoop

./bin/hadoop jar./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.4.jar

在 HDFS 中建立使用者目錄

在HDFS 中建立使用者目錄 hadoop:

/usr/local/hadoop/bin/hdfs dfs -mkdir -p /user/hadoop

準備實驗資料

本教程中,我們將以 Hadoop 所有的 xml 配置檔案作為輸入資料來完成實驗。執行下面命令在 HDFS 中新建一個 input 資料夾並將 hadoop 配置檔案上傳到該資料夾下:

cd /usr/local/hadoop

./bin/hdfs dfs -mkdir /user/hadoop/input

./bin/hdfs dfs -put ./etc/hadoop/*.xml /user/hadoop/input

使用下面命令可以檢視剛剛上傳到 HDFS 的檔案:

/usr/local/hadoop/bin/hdfs dfs -ls /user/hadoop/input

執行實驗

執行實驗:

cd /usr/local/hadoop

./bin/hadoop jar./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.4.jar grep/user/hadoop/input /user/hadoop/output 'dfs[a-z.]+'

上述命令以 HDFS 檔案系統中的 input 為輸入資料來執行 Hadoop 自帶的 grep 程式,提取其中符合正則表示式 dfs[a-z.]+ 的資料並進行次數統計,將結果輸出到 HDFS 檔案系統的 output 資料夾下。

檢視執行結果

上述例子完成後的結果儲存在 HDFS 中,通過下面命令檢視結果:

/usr/local/hadoop/bin/hdfs dfs -cat /user/hadoop/output/*

如果執行成功,可以看到如下結果:

1       dfsadmin

1      dfs.replication

1      dfs.namenode.name.dir

1      dfs.datanode.data.dir

刪除 HDFS 上的輸出結果

刪除 HDFS 中的結果目錄:

/usr/local/hadoop/bin/hdfs dfs -rm -r /user/hadoop/output

執行 Hadoop 程式時,為了防止覆蓋結果,程式指定的輸出目錄不能存在,否則會提示錯誤,因此在下次執行前需要先刪除輸出目錄。

關閉 Hadoop 程序

關閉 Hadoop 程序:

/usr/local/hadoop/sbin/stop-dfs.sh

再起啟動只需要執行下面命令:

/usr/local/hadoop/sbin/start-dfs.sh