本Hadoop安裝教程爲簡略版本,包含僞分佈式和集羣的配置,只列出命令與配置,不做詳細說明,方便有基礎的讀者。完整版請瀏覽Hadoop安裝配置教程_僞分佈式,以及Hadoop集羣安裝配置教程。java
本教程在 Ubutnu 14.04 64位,Hadoop 2.6.0 下驗證經過。最新的 Hadoop 2 穩定版能夠經過 http://mirror.bit.edu.cn/apache/hadoop/common/stable2/ 或者 http://mirrors.cnnic.cn/apache/hadoop/common/stable/ 下載。node
Hadoop 僞分佈式配置apache
建立Hadoop用戶:vim
1. sudo useradd -m hadoop -s /bin/bash # 建立hadoop用戶bash
2. sudo passwd hadoop # 修改密碼網絡
3. sudo adduser hadoop sudo # 增長管理員權限ssh
註銷並使用 Hadoop 用戶登陸,接着更新 apt 而且安裝 vim:jvm
1. sudo apt-get update # 更新apt分佈式
2. sudo apt-get install vim # 安裝vimoop
安裝SSH,配置無密碼登陸:
1. sudo apt-get install openssh-server
2. cd ~
3. mkdir .ssh # 可能該文件已存在,不影響
4. cd ~/.ssh/
5. ssh-keygen -t rsa # 會有提示,都按回車就能夠
6. cat id_rsa.pub >> authorized_keys # 加入受權
安裝Java環境:
1. sudo apt-get install openjdk-7-jre openjdk-7-jdk
2. vim ~/.bashrc # 設置JAVA_HOME
在文件最前面添加以下單獨一行:
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
使 JAVA_HOME 變量生效:
1. source ~/.bashrc # 使變量設置生效
安裝 Hadoop 2:
1. cd ~/下載
2. sudo tar -zxvf ./hadoop-2.6.0.tar.gz -C /usr/local # 解壓到/usr/local中
3. cd /usr/local/
4. sudo mv ./hadoop-2.6.0/ ./hadoop # 將文件夾名改成hadoop
5. sudo chown -R hadoop:hadoop ./hadoop # 修改文件權限
進行僞分佈式配置:
修改配置文件 core-site.xml (vim /usr/local/hadoop/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:
<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>
啓動 Hadoop:
1. cd /usr/local/hadoop
2. bin/hdfs namenode -format # namenode 格式化
3. sbin/start-dfs.sh # 開啓守護進程
4. jps # 判斷是否啓動成功
若成功啓動則會列出以下進程: NameNode、DataNode和SecondaryNameNode。
(出錯,無datenode
解決辦法:
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
)
運行 WordCount 實例:
1. bin/hdfs dfs -mkdir -p /user/hadoop # 建立HDFS目錄
2. bin/hdfs dfs -mkdir input
3. bin/hdfs dfs -put etc/hadoop/*.xml input # 將配置文件做爲輸入
4. bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'
5. bin/hdfs dfs -cat output/* # 查看輸出
Hadoop 集羣配置
假定有兩臺機器:
Master 192.168.1.121
Slave1 192.168.1.122
Hadoop 集羣配置過程:
1. 選定一臺機器做爲 Master,在全部主機上配置網絡映射
2. 在 Master 主機上配置hadoop用戶、安裝SSH server、安裝Java環境
3. 在 Master 主機上安裝Hadoop,並完成配置
4. 在其餘主機上配置hadoop用戶、安裝SSH server、安裝Java環境
5. 將 Master 主機上的Hadoop目錄複製到其餘主機上
6. 開啓、使用 Hadoop
全部主機配置hadoop用戶、安裝SSH server、安裝Java環境:
1. sudo useradd -m hadoop -s /bin/bash # 建立hadoop用戶
2. sudo passwd hadoop # 修改密碼
3. sudo adduser hadoop sudo # 增長管理員權限
4. # 註銷並使用 Hadoop 用戶登陸
5. sudo apt-get update # 更新apt
6. sudo apt-get install vim # 安裝vim
7. sudo apt-get install openssh-server # 安裝ssh
8. sudo apt-get install openjdk-7-jre openjdk-7-jdk # 安裝Java
9. vim ~/.bashrc # 設置JAVA_HOME
在文件最前面添加以下單獨一行:
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
使 JAVA_HOME 變量生效:
1. source ~/.bashrc # 使變量設置生效
全部主機配置網絡映射:
1. sudo vim /etc/hostname # 修改主機名
2. sudo vim /etc/hosts # 修改主機與 IP 的映射關係
3. sudo reboot # 重啓,使網絡配置生效
在 Master 主機上執行:
1. cd ~/.ssh
2. ssh-keygen -t rsa # 一直按回車就能夠
3. cat ~/id_rsa.pub >> ~/authorized_keys
4. scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/ # 傳輸公鑰到Slave1
接着在 Slave1 節點上執行
1. cd ~
2. mkdir .ssh
3. cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
在Master節點上進行Hadoop集羣配置(位於 /usr/local/hadoop/etc/hadoop中):
文件 slave:
將原來 localhost 刪除,把全部Slave的主機名寫上,每行一個。
文件 core-site.xml:
<property>
<name>fs.defaultFS</name>
<value>hdfs://Master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
文件 hdfs-site.xml:
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>Master:50090</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>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
文件 mapred-site.xml(首先需執行 cp mapred-site.xml.template mapred-site.xml):
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
文件 yarn-site.xml:
<property>
<name>yarn.resourcemanager.hostname</name>
<value>Master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
配置好後,在 Master 主機上,將 Hadoop 文件複製到各個節點上:
1. cd /usr/local
2. rm -r ./hadoop/tmp # 刪除 Hadoop 臨時文件
3. sudo tar -zcf ./hadoop.tar.gz ./hadoop
4. scp ./hadoop.tar.gz Slave1:/home/hadoop
在 Slave1 上執行:
1. sudo tar -zxf ~/hadoop.tar.gz -C /usr/local
2. sudo chown -R hadoop:hadoop /usr/local/hadoop
最後在 Master 主機上就能夠啓動hadoop了:
1. cd /usr/local/hadoop/
2. bin/hdfs namenode -format
3. sbin/start-dfs.sh
4. sbin/start-yarn.sh
5. jps # 判斷是否啓動成功
若成功啓動,則Master節點啓動了NameNode、SecondrryNameNode、ResourceManager進程,Slave節點啓動了DataNode和NodeManager進程。
在 Master 主機上執行WordCount實例:
1. bin/hdfs dfs -mkdir -p /user/hadoop
2. bin/hdfs dfs -put etc/hadoop input
3. bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'
附加教程: 配置PATH環境變量
在 ~/.bashrc 最前面加入以下單獨一行:
export PATH=$PATH:/usr/local/hadoop/sbin:/usr/local/hadoop/bin