最新版hadoop2.7.1單機版與偽分散式安裝配置
前提:熟悉Linux系統操作,掌握基本的Linux命令
注意:安裝路徑中不能有任何中文字元和空格!
我安裝的是ubuntu14,使用者名稱是ubuntu,機器名是ubuntu,hadoop的版本是hadoop-2.7.1.tar.gz
一、在Ubuntu下建立hadoop使用者組和使用者
1、 將hadoop使用者新增到系統使用者
ubuntu@ubuntu:~$ sudo addgroup hadoop
ubuntu@ubuntu:~$ sudo adduser --ingroup hadoop hadoop
2、 現在只是添加了一個使用者hadoop,它並不具備管理員許可權,我們給
ubuntu@ubuntu:~$ sudo vim /etc/sudoers
在root ALL=(ALL:ALL) ALL下新增hadoop ALL=(ALL:ALL) ALL
二、配置Java環境
1、 將jdk-7u80-linux-x64.tar.gz解壓到相應路徑(可以用命令也可以直接選中右鍵解壓),我這裡是解壓到/home/ubuntu/software/java,解壓後文件夾為jdk1.7.0_80(所在路徑為/home/ubuntu/software/java/jdk1.7.0_80)
2、 解壓完之後配置環境變數
ubuntu@ubuntu:$ sudo vim /etc/profile
在最後新增如下:
export JAVA_HOME=/home/ubuntu/software/java/jdk1.7.0_80
export JRE_HOME=/home/ubuntu/software/java/jdk1.7.0_80/jre
exportCLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
exportPATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
執行java -version命令驗證Java是否安裝配置成功。
ubuntu@ubuntu:~$ java -version java version "1.7.0_80" Java(TM) SE Runtime Environment (build 1.7.0_80-b15) Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
三、SSH安裝
1、 先安裝ssh。記住:從這裡開始需要先從ubuntu使用者切換到hadoop使用者
ubuntu@ubuntu:~$ su - hadoop
Password:
hadoop@ubuntu:~$ sudo apt-get install openssh-server
2、 如果ssh安裝完成之後,先啟動服務
hadoop@ubuntu:~$ sudo /etc/init.d/ssh start
啟動後通過命令檢視是否正確啟動
hadoop@ubuntu:~$ ps -e |grep ssh
3、 作為一個安全通訊協議(ssh生成金鑰有rsa和dsa兩種生成方式,預設情況下采用rsa方式),使用時需要密碼,因此我們要設定成免密碼登入,生成私鑰和公鑰:
hadoop@ubuntu:~$ ssh-keygen -t rsa -P ""
(注:回車後會在~/.ssh/下生成兩個檔案:id_rsa和id_rsa.pub這兩個檔案是成對出現的前者為私鑰,後者為公鑰)
進入~/.ssh/目錄下,將公鑰id_rsa.pub追加到authorized_keys授權檔案中,開始是沒有authorized_keys檔案的(authorized_keys 用於儲存所有允許以當前使用者身份登入到ssh客戶端使用者的公鑰內容):
hadoop@ubuntu:~$ cat ~/.ssh/id_rsa.pub>> ~/.ssh/authorized_keys
執行ssh localhost命令進行登入:
hadoop@ubuntu:~$ ssh localhost
Welcome to Ubuntu 14.04.3 LTS (GNU/Linux 3.19.0-43-generic x86_64)
* Documentation: https://help.ubuntu.com/
18 packages can be updated.
18 updates are security updates.
Last login: Thu Jan 21 14:40:38 2016 from localhost
出現“Welcome to Ubuntu 14.04.3 LTS。。。”則表示登入成功。
( 注:當ssh遠端登入到其它機器後,現在你控制的是遠端的機器,需要執行退出命令才能重新控制本地主機。)
使用命令exit可以進行退出
hadoop@ubuntu:~$ exit
logout
Connection to localhost closed.
編輯/etc/hosts檔案,將
127.0.0.1 localhost
127.0.1.1 ubuntu
改為
192.168.1.128 localhost
192.168.1.128 ubuntu
注:192.168.1.128為虛擬機器機的ip地址(用命令ifconfig可以檢視ip)
四、安裝hadoop-2.7.1
1、 將hadoop-2.7.gz解壓到/usr/local下面
hadoop@ubuntu:~$ sudo tar –xzf hadoop-2.7.gz
重新命名hadoop-2.7.1資料夾名為hadoop(為了敲命令方便)
hadoop@ubuntu:~$ sudo mv hadoop-2.7.1 hadoop
2、 要確保所有的操作都是在使用者hadoop下完成的,所以將該hadoop資料夾的屬主使用者設為hadoop。
hadoop@ubuntu:/usr/local$sudo chown –R hadoop:hadoop hadoop
3、 配置hadoop-env.sh檔案(hadoop-env.sh檔案在hadoop/etc/hadoop路徑下面)
hadoop@ubuntu:/usr/local$ sudo vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh
在hadoop-env.sh中export JAVA_HOME後面新增以下資訊(JAVA_HOME路徑改為實際路徑):
export JAVA_HOME=/home/ubuntu/software/java/jdk1.7.0_80
export HADOOP_INSTALL=/usr/local/hadoop
export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin
export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export YARN_HOME=$HADOOP_INSTALL
儲存之後執行下面命令使配置生效
hadoop@ubuntu:/usr/local/hadoop/etc/hadoop$source hadoop-env.sh
再到/etc/profile中新增HADOOP_INSTALL並修改PATH,結果為
export JAVA_HOME=/home/ubuntu/software/java/jdk1.7.0_80
export JRE_HOME=/home/ubuntu/software/java/jdk1.7.0_80/jre
export HADOOP_INSTALL=/usr/local/hadoop
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
exportPATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_INSTALL/bin:$HADOOP_INSTALL/sbin
儲存後重啟虛擬機器。
切換到hadoop使用者,
執行命令
hadoop@ubuntu:/usr/local/hadoop$ hadoop version
如果看到如下hadoop版本資訊則表示hadoop單機模式安裝成功
hadoop@ubuntu:/usr/local/hadoop$ hadoop version
Hadoop 2.7.1
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r15ecc87ccf4a0228f35af08fc56de536e6ce657a
Compiled by jenkins on 2015-06-29T06:04Z
Compiled with protoc 2.5.0
From source with checksum fc0a1a23fc1868e4d5ee7fa2b28a58a
This command was run using/usr/local/hadoop/share/hadoop/common/hadoop-common-2.7.1.jar
現在執行一下hadoop自帶的例子wordcount來感受以下MapReduce過程:
在hadoop目錄下新建input資料夾
hadoop@ubuntu:/usr/local/hadoop$ sudo mkdir input
將etc中的所有檔案拷貝到input資料夾中
hadoop@ubuntu:/usr/local/hadoop$ cp etc/*input
執行wordcount程式,並將結果儲存到output中(注意input所在路徑、jar所在路徑)
hadoop@ubuntu:/usr/local/hadoop/share/hadoop/mapreduce$bin/hadoop jar hadoop-mapreduce-examples-2.7.1.jarwordcount /usr/local/hadoop/input/hadoop output
執行
hadoop@ubuntu:/usr/local/hadoop$ cat output/*
會看到conf所有檔案的單詞和頻數都被統計出來。
到此單機模式已經安裝成功,下面可以接著偽分佈模式安裝
一、在/etc/hadoop下配置一下幾個檔案core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml
在後面新增如下資訊
core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporarydirectories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.154.128:9000</value>
</property>
</configuration>
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>
mapred-site.xml(沒有則複製一份mapred-site.xml.template並命名為mapred-site.xml)
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
二、HDFS檔案系統格式化和系統啟動
下面進行HDFS檔案系統進行格式化:
$bin/hdfs namenode -format
然後啟用NameNode及DataNode程序:
hadoop@ubuntu:/usr/local/hadoop$ sbin/start-dfs.sh
hadoop@ubuntu:/usr/local/hadoop$ sbin/start-yarn.sh
啟動程序之後用jps命令檢視程序情況,出現6個程序名字說明啟動成功
8431 JobTracker
8684 TaskTracker
7821 NameNode
7281 DataNode
8915 Jps
8341 SecondaryNameNode
至此,hadoop偽分散式安裝成功。