歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> Hadoop安裝&單機/偽分布式配置_Hadoop2.7.2/Ubuntu14.04

Hadoop安裝&單機/偽分布式配置_Hadoop2.7.2/Ubuntu14.04

日期:2017/3/3 13:52:08   编辑:Linux技術

一、安裝Java1.下載jdk-8u91-linux-x64.tar.gz文件,網址為:http://www.oracle.com/technetwork/java/javase/downloads/index.html

2.安裝:

#選擇一個安裝路徑,我選擇的是/opt,並將下載的jdk-8u91-linux-x64.tar.gz文件復制到這個文件夾下

$ cd /opt

$ sudo cp ~/Downloads/jdk-8u91-linux-x64.tar.gz -i /opt/

#解壓、安裝

$ sudo tar zxvf jdk-8u91-linux-x64.tar.gz

$ sudo rm -r jdk-8u91-linux-x64.tar.gz

#檢查是否安裝成功

二、創建hadoop組和hadoop用戶

1.添加hadoop用戶到系統用戶

$ sudo addgroup hadoop

$ sudo adduser --ingroup hadoop hduser

2.給hadoop用戶賦予rs

在root ALL=(ALL:ALL) ALL下面加上hduser ALL=(ALL:ALL) ALL

如下圖:

三、配置SSH

以使各機器之間執行指令無需輸入登錄密碼,否則,主節點每次試圖訪問其他節點時,都需要手動輸入這個密碼。

1.安裝ssh

$ sudo apt-get install openssh-server

2.啟動服務

$ sudo /etc/init.d/ssh start

3.啟動後,可以通過如下命令查看服務是否正確啟動

$ ps -e |grep ssh

4.生成公鑰和私鑰:

$ ssh-keygen -y -t rsa -P ""

這時會在/home/hduser/.ssh下生成兩個文件:id_rsa和id_rsa.pub,前者為私鑰,後者為公鑰.

5.現在我們將公鑰追加到authorized_keys中

$ cat ~/.ssh/id_rsa.pub>> ~/.ssh/authorized_keys

6.登入ssh,確認以後登錄時不用輸入密碼

ssh localhost

7.登出

exit

再次登入的話就不需要密碼了四、安裝hadoop

1.首先到https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/stable/下載hadoop-2.7.2.tar.gz

2.解壓並放在你希望的目錄中。我放到了/usr/local/hadoop

$ sudo tar xzf hadoop-2.7.2.tar.gz

$ sudo mv hadoop-2.7.2 /usr/local/hadoop

3.要確保所有的操作都是在用戶hdsuer下完成的:

$ sudo chown -R hduser:hadoop /usr/local/hadoop

五、配置~/.bashrc1.切換到hadoop用戶,我的是hduser

$ su - hduser

2..查看java安裝路徑

update-alternatives - -config java

完整的路徑為: /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java

我們只取前面的部分 /usr/lib/jvm/java-7-openjdk-amd64

3.修改配置文件bashrc

$ sudo gedit ~/.bashrc

#在文件末尾追加下面內容

#HADOOP VARIABLES START

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

export HADOOP_INSTALL=/usr/local/hadoop

export PATH=$PATH:$HADOOP_INSTALL/bin

export PATH=$PATH:$HADOOP_INSTALL/sbin

export HADOOP_MAPRED_HOME=$HADOOP_INSTALL

export HADOOP_COMMON_HOME=$HADOOP_INSTALL

export HADOOP_HDFS_HOME=$HADOOP_INSTALL

export YARN_HOME=$HADOOP_INSTALL

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native

export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib"

#HADOOP VARIABLES END

4.修改/usr/local/hadoop/etc/hadoop/hadoop-env.sh

$ sudo gedit /usr/local/hadoop/etc/hadoop/hadoop-env.sh

找到JAVA_HOME變量,修改此變量如下

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

至此,單機模式配置完畢,下面進行wordcount測試六、wordcount測試

1.首先在hadoop目錄下新建文件夾input

$ cd /usr/local/hadoop/

$ mkdir input

2.將README.txt文件拷貝到input文件夾下,以統計文件中單詞的頻數

$ sudo cp README.txt input

3.運行wordcount程序,並將輸出結果保存在output文件夾下

#每次重新執行wordcount程序的時候,都需要先把output文件夾刪除!否則會出錯$ bin/hadoop jar share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.7.2-sources.jar org.apache.hadoop.examples.WordCount input output

4.查看字符統計結果

$ cat output/*

七、偽分布模式配置

1.修改2個配置文件 core-site.xml 和 hdfs-site.xml,配置文件位於 /usr/local/hadoop/etc/hadoop/ 中

首先在hadoop目錄下創建幾個文件夾:

$ cd /usr/local/hadoop

$ mkdir tmp

$ mkdir tmp/dfs

$ mkdir tmp/dfs/data

$ mkdir tmp/dfs/name

修改 core-site.xml:

$ sudo gedit etc/hadoop/core-site.xml

修改為以下配置:

<configuration>

<property>

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

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

<description>Abase for other temporary directories.</description>

</property>

<property>

<name>fs.defaultFS</name>

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

</property>

</configuration>

修改hdfs-site.xml:

$ sudo gedit 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>

2.執行NameNode 的格式化

./bin/hdfs namenode -format

注意!只有剛創建hadoop集群的時候才需要格式化,不能對一個運行中的hadoop文件系統(HDFS)格式化,否則會丟失數據!!成功的話,會看到 “successfully formatted” 和 “Exitting with status 0” 的提示,若為 “Exitting with status 1” 則是出錯。

3.啟動hadoop

執行start-all.sh來啟動所有服務,包括namenode,datanode.

$ start-all.sh

在這裡,如果出現了 Error: Cannot find configuration directory: /etc/hadoop,則通過下面方法解決:在hadoop-env.sh 配置一條hadoop配置文件所在目錄

$ sudo gedit etc/hadoop/hadoop-env.sh

加上export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop

修改後如下圖:

$ source etc/hadoop/hadoop-env.sh

再次啟動所有服務就好了

$ start-all.sh

啟動時可能會出現如下 WARN 提示:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable。該WARN 提示可以忽略,並不會影響正常使用

4.通過jps命令判斷是否成功啟動:

出現這種情況後,在計算機中搜索jps,由於我的java安裝路徑是:/opt/jdk1.8.0_91,所以jps位於:/opt/jdk1.8.0_91/bin

$ cd /opt/jdk1.8.0_91/bin

$ ./jps

若成功啟動則會列出如下進程: “NameNode”、”DataNode” 和 “SecondaryNameNode”

5.通過web界面查看hdfs信息

轉到http://localhost:50070/即可查看

如果不能加載出http://localhost:50070/,則可能通過下面的方法解決:先執行NameNode 的格式化

$ ./bin/hdfs namenode -format

出現提示輸入Y/N時一定要輸入大寫Y!!!出現提示輸入Y/N時一定要輸入大寫Y!!!

出現提示輸入Y/N時一定要輸入大寫Y!!!再執行start-all.sh來啟動所有服務

$ start-all.sh

然後執行jps命令

$ cd /opt/jdk1.8.0_91/bin

$ ./jps

再次轉到網址http://localhost:50070/,就可以正常加載了。

6.停止運行hadoop

$ stop-all.sh

出現了no datanode to stop的提示:

解決方法:在stop-all.sh之後,刪除/tmp/dfs/data以及/tmp/dfs/name下的所有內容,如下圖所示,均包含一個current文件夾:

因此只需刪除current文件夾

刪除之後,再次格式化namenode、啟動所有服務start-all.sh、並停止stop-all.sh,就可以正常stop datanode了。

Copyright © Linux教程網 All Rights Reserved