CentOS6.7 下搭建 Hadoop2.7.1 單機僞分佈式環境
| |目錄
- 1CentOS6.7 mini版安裝
- ·下載地址
- ·分區
- 2設置固定IP地址及網關
- ·設置IP
- ·設置網關
- ·設置DNS
- ·重啓網卡
- ·測試網絡
- ·設置主機名對應IP地址
- 3添加Hadoop用戶
- ·添加用戶組
- ·添加用戶並分配用戶組
- ·修改用戶密碼
- 4關閉服務
- ·關閉防火牆
- ·關閉SELinux
- ·關閉其他服務
- 5VSFTP安裝與配置
- ·安裝vsftp
- ·啓動vsftp
- ·設置vsftp開機啓動
- 6SSH無密碼配置
- ·安裝ssh與rsync
- ·生成ssh密碼對
- ·設置授權key權限
- ·測試ssh連接
- 7安裝Java
- ·下載地址
- ·安裝Java
- ·設置環境變量
- 8Hadoop安裝與配置
- ·下載地址
- ·安裝Hadoop
- ·配置HDFS
- ·在HDFS上運行WordCount
- ·配置YARN
- 9HDFS常用命令
- ·創建HDFS文件夾
- ·查看HDFS文件夾
- ·複製文件到HDFS
- ·刪除文件夾
- 10參考資料
1CentOS6.7 mini版安裝
下載地址
http://mirror.citynethost.com/centos/6.7/isos/i386/CentOS-6.7-i386-minimal.iso
分區
1
2
3
|
/boot:200M - 用來存放與Linux系統啓動有關的程序,比如啓動引導裝載程序等。 /swap:交換分區,建議大小是物理內存的1倍左右。 /:剩餘空間 - Linux系統的根目錄,所有的目錄都掛在這個目錄下面。 |
2設置固定IP地址及網關
設置IP
1
|
vi /etc/sysconfig/network-scripts/ifcfg-eth0 |
修改如下內容
1
2
3
4
5
6
7
8
9
|
DEVICE=eth0 HWADDR=08:00:27:BD:9D:B5 #不用改 TYPE=Ethernet UUID=53e4e4b6-9724-43ab-9da7-68792e611031 #不用改 ONBOOT=yes #開機啓動 NM_CONTROLLED=yes BOOTPROTO=static #靜態IP IPADDR=192.168.30.50 #IP地址 NETMASK=255.255.255.0 #子網掩碼 |
設置網關
1
|
vi /etc/sysconfig/network |
添加內容
1
2
3
|
NETWORKING=yes HOSTNAME=Hadoop.Master GATEWAY=192.168.30.1 #網關 |
設置DNS
1
|
vi /etc/resolv.conf |
添加內容
1
2
|
nameserver xxx.xxx.xxx.xxx #根據實際情況設置 nameserver 114.114.114.114 #可以設置多個 |
重啓網卡
1
|
service network restart |
測試網絡
1
|
ping www.baidu.com #ping不通一般是DNS問題 |
設置主機名對應IP地址
1
2
3
|
vi /etc/hosts #添加如下內容 192.168.30.50 Hadoop.Master |
3添加Hadoop用戶
添加用戶組
1
|
groupadd hadoop |
添加用戶並分配用戶組
1
|
useradd -g hadoop hadoop |
修改用戶密碼
1
|
passwd hadoop |
4關閉服務
關閉防火牆
1
2
3
4
|
service iptables stop #關閉防火牆服務 chkconfig iptables off #關閉防火牆開機啓動 service ip6tables stop chkconfig ip6tables off |
關閉SELinux
1
2
3
4
5
6
|
vi /etc/sysconfig/selinux #修改如下內容 SELINUX=enforcing -> SELINUX=disabled #再執行如下命令 setenforce 0 getenforce |
關閉其他服務
1
|
for SERVICES in abrtd acpid auditd avahidaemon cpuspeed haldaemon mdmonitor messagebus udevpost;do chkconfig ${SERVICES} off;done |
5VSFTP安裝與配置
檢查是否安裝
1
|
chkconfig --list|grep vsftpd |
安裝vsftp
1
|
yum -y install vsftpd |
創建日誌文件
1
|
touch /var/log/vsftpd.log |
配置vsfpd服務
1
2
3
4
5
6
7
8
|
vi /etc/vsftpd/vsftpd.conf #修改如下內容 anonymous_enable=NO #關閉匿名訪問 xferlog_file=/var/log/vsftpd.log #設置日誌文件 -- 我們上一步所創建的文件 idle_session_timeout=600 #會話超時時間 async_abor_enable=YES #開啓異步傳輸 ascii_upload_enable=YES #開啓ASCII上傳 ascii_download_enable=YES #開啓ASCII下載 |
查看vsftp運行狀態
1
|
service vsftpd status |
啓動vsftp
1
2
3
|
service vsftpd start #重啓 service vsftpd restart #關閉 service vsftpd stop |
查看vsftpd服務啓動項
1
|
chkconfig --list|grep vsftpd |
設置vsftp開機啓動
1
2
|
chkconfig vsftpd on #或 chkconfig --level 2345 vsftpd on |
6SSH無密碼配置
查看ssh與rsync安裝狀態
1
2
|
rpm -qa|grep openssh rpm -qa|grep rsync |
安裝ssh與rsync
1
2
|
yum -y install ssh yum -y install rsync |
切換hadoop用戶
1
|
su - hadoop |
生成ssh密碼對
1
|
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa |
將id_dsa.pub追加到授權的key中
1
|
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys |
設置授權key權限
1
2
|
chmod 600 ~/.ssh/authorized_keys #權限的設置非常重要,因爲不安全的設置安全設置,會讓你不能使用RSA功能 |
測試ssh連接
1
2
|
ssh localhost #如果不需要輸入密碼,則是成功 |
7安裝Java
下載地址
http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html
注:我這裏使用的是:jdk-7u80-linux-i586.tar.gz
安裝Java
切換至root用戶
1
|
su - |
創建/usr/java文件夾
1
|
mkdir /usr/java |
使用FTP工具上傳至服務器
將壓縮包上傳至/home/hadoop目錄
注:我這裏使用的是FlashFXP,使用hadoop用戶連接
將壓縮包解壓至/usr/java 目錄
1
|
tar zxvf /home/hadoop/jdk-7u80-linux-i586.tar.gz -C /usr/java/ |
設置環境變量
1
2
3
4
5
|
vi /etc/profile #追加如下內容 export JAVA_HOME=/usr/java/jdk1.7.0_80 export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib export PATH=$PATH:$JAVA_HOME/bin |
使環境變量生效
1
|
source /etc/profile |
測試環境變量設置
1
|
java -version |
8Hadoop安裝與配置
下載地址
http://hadoop.apache.org/releases.html
注:我下載的是hadoop-2.7.1.tar.gz
安裝Hadoop
使用FTP工具上傳至服務器
將壓縮包上傳至/home/hadoop目錄
將壓縮包解壓至/usr目錄
1
|
tar zxvf /home/hadoop/hadoop-2.7.1.tar.gz -C /usr/ |
修改文件夾名稱
1
|
mv /usr/hadoop-2.7.1/ /usr/hadoop |
創建hadoop數據目錄
1
|
mkdir /usr/hadoop/tmp |
將hadoop文件夾授權給hadoop用戶
1
|
chown -R hadoop:hadoop /usr/hadoop/ |
設置環境變量
1
2
3
4
5
6
|
vi /etc/profile #追加如下內容 export HADOOP_HOME=/usr/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib" |
使環境變量生效
1
|
source /etc/profile |
測試環境變量設置
1
|
hadoop version |
配置HDFS
切換至Hadoop用戶
1
|
su - hadoop |
修改hadoop-env.sh
1
2
3
4
|
cd /usr/hadoop/etc/hadoop/ vi hadoop-env.sh #追加如下內容 export JAVA_HOME=/usr/java/jdk1.7.0_80 |
修改core-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
|
vi core-site.xml #添加如下內容 <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://Hadoop.Master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/hadoop/tmp/</value> <description>A base for other temporary directories.</description> </property> </configuration> |
修改hdfs-site.xml
1
2
3
4
5
6
7
8
|
vi hdfs-site.xml #添加如下內容 <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration> |
格式化hdfs
1
|
hdfs namenode -format |
注:出現Exiting with status 0即爲成功
啓動hdfs
1
2
|
start-dfs.sh #停止命令 stop-dfs.sh |
注:輸出如下內容
1
2
3
4
5
6
7
8
9
10
11
|
15/09/21 18:09:13 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable Starting namenodes on [Hadoop.Master] Hadoop.Master: starting namenode, logging to /usr/hadoop/logs/hadoop-hadoop-namenode-Hadoop.Master.out Hadoop.Master: starting datanode, logging to /usr/hadoop/logs/hadoop-hadoop-datanode-Hadoop.Master.out Starting secondary namenodes [0.0.0.0] The authenticity of host '0.0.0.0 (0.0.0.0)' can't be established. RSA key fingerprint is b5:96:b2:68:e6:63:1a:3c:7d:08:67:4b:ae:80:e2:e3. Are you sure you want to continue connecting (yes/no)? yes 0.0.0.0: Warning: Permanently added '0.0.0.0' (RSA) to the list of known hosts. 0.0.0.0: starting secondarynamenode, logging to /usr/hadoop/logs/hadoop-hadoop-secondarynamenode-Hadoop.Master.out 15/09/21 18:09:45 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicab |
查看進程
1
|
jps |
注:輸出類似如下內容
1
2
3
4
|
1763 NameNode 1881 DataNode 2146 Jps 2040 SecondaryNameNode |
使用web查看Hadoop運行狀態
1
|
http://你的服務器ip地址:50070/ |
在HDFS上運行WordCount
創建HDFS用戶目錄
1
2
|
hdfs dfs -mkdir /user hdfs dfs -mkdir /user/hadoop #根據自己的情況調整/user/<username> |
複製輸入文件(要處理的文件)到HDFS上
1
|
hdfs dfs -put /usr/hadoop/etc/hadoop input |
查看我們複製到HDFS上的文件
1
|
hdfs dfs -ls input |
運行單詞檢索(grep)程序
1
2
3
4
|
hadoop jar /usr/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar grep input output 'dfs[a-z.]+' #WordCount #hadoop jar /usr/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar wordcount input output #說明:output文件夾如已經存在則需要刪除或指定其他文件夾。 |
查看運行結果
1
|
hdfs dfs -cat output/* |
配置YARN
修改mapred-site.xml
1
2
3
4
5
6
7
8
9
10
|
cd /usr/hadoop/etc/hadoop/ cp mapred-site.xml.template mapred-site.xml vi mapred-site.xml #添加如下內容 <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration> |
修改yarn-site.xml
1
2
3
4
5
6
7
8
|
vi yarn-site.xml #添加如下內容 <configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration> |
啓動YARN
1
2
|
start-yarn.sh #停止yarn stop-yarn.sh |
查看當前java進程
1
2
3
4
5
6
7
8
|
jsp #輸出如下 4918 ResourceManager 1663 NameNode 1950 SecondaryNameNode 5010 NodeManager 5218 Jps 1759 DataNode |
運行你的mapReduce程序
配置好如上配置再運行mapReduce程序時即是yarn中運行。
使用web查看Yarn運行狀態
1
|
http://你的服務器ip地址:8088/ |
9HDFS常用命令
創建HDFS文件夾
在根目錄創建input文件夾
1
|
hdfs dfs -mkdir -p /input |
在用戶目錄創建input文件夾
說明:如果不指定“/目錄”,則默認在用戶目錄創建文件夾
1
2
|
hdfs dfs -mkdir -p input #等同於 hdfs dfs -mkdir -p /user/hadoop/input |
查看HDFS文件夾
查看HDFS根文件夾
1
|
hdfs dfs -ls / |
查看HDFS用戶目錄文件夾
1
|
hdfs dfs -ls |
查看HDFS用戶目錄文件夾下input文件夾
1
2
|
hdfs dfs -ls input #等同與 hdfs dfs -ls /user/hadoop/input |
複製文件到HDFS
1
|
hdfs dfs -put /usr/hadoop/etc/hadoop input |
刪除文件夾
1
|
hdfs dfs -rm -r input |
10參考資料
單機僞分佈式搭建教程:http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SingleCluster.html
集羣環境搭建教程:http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/ClusterSetup.html