CentOS6.7 下搭建 Hadoop2.7.1 單機僞分佈式環境


概要:

CentOS6.7 下搭建 Hadoop2.7.1 單機僞分佈式環境

1CentOS6.7 mini版安裝

下載地址

http://mirror.citynethost.com/centos/6.7/isos/i386/CentOS-6.7-i386-minimal.iso

分區

Text | 複製
1
2
3
/boot:200M - 用來存放與Linux系統啓動有關的程序,比如啓動引導裝載程序等。
/swap:交換分區,建議大小是物理內存的1倍左右。
/:剩餘空間 - Linux系統的根目錄,所有的目錄都掛在這個目錄下面。

2設置固定IP地址及網關

設置IP

Text | 複製
1
vi /etc/sysconfig/network-scripts/ifcfg-eth0

修改如下內容

Text | 複製
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 #子網掩碼

設置網關

Text | 複製
1
vi /etc/sysconfig/network

添加內容

Text | 複製
1
2
3
NETWORKING=yes
HOSTNAME=Hadoop.Master
GATEWAY=192.168.30.1 #網關

設置DNS

Text | 複製
1
vi /etc/resolv.conf

添加內容

Text | 複製
1
2
nameserver xxx.xxx.xxx.xxx #根據實際情況設置
nameserver 114.114.114.114 #可以設置多個

重啓網卡

Text | 複製
1
service network restart

測試網絡

Text | 複製
1
ping www.baidu.com #ping不通一般是DNS問題

設置主機名對應IP地址

Text | 複製
1
2
3
vi /etc/hosts
#添加如下內容
192.168.30.50 Hadoop.Master

3添加Hadoop用戶

添加用戶組

Text | 複製
1
groupadd hadoop

添加用戶並分配用戶組

Text | 複製
1
useradd -g hadoop hadoop

修改用戶密碼

Text | 複製
1
passwd hadoop

4關閉服務

關閉防火牆

Text | 複製
1
2
3
4
service iptables stop #關閉防火牆服務
chkconfig iptables off #關閉防火牆開機啓動
service ip6tables stop
chkconfig ip6tables off

關閉SELinux

Text | 複製
1
2
3
4
5
6
vi /etc/sysconfig/selinux
#修改如下內容
SELINUX=enforcing -> SELINUX=disabled
#再執行如下命令
setenforce 0
getenforce

關閉其他服務

Text | 複製
1
for SERVICES in abrtd acpid auditd avahidaemon cpuspeed haldaemon mdmonitor messagebus udevpost;do chkconfig ${SERVICES} off;done

5VSFTP安裝與配置

檢查是否安裝

Text | 複製
1
chkconfig --list|grep vsftpd

安裝vsftp

Text | 複製
1
yum -y install vsftpd

創建日誌文件

Text | 複製
1
touch /var/log/vsftpd.log

配置vsfpd服務

Text | 複製
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運行狀態

Text | 複製
1
service vsftpd status

啓動vsftp

Text | 複製
1
2
3
service vsftpd start
#重啓 service vsftpd restart
#關閉 service vsftpd stop

查看vsftpd服務啓動項

Text | 複製
1
chkconfig --list|grep vsftpd

設置vsftp開機啓動

Text | 複製
1
2
chkconfig vsftpd on
#或 chkconfig --level 2345 vsftpd on

6SSH無密碼配置

查看ssh與rsync安裝狀態

Text | 複製
1
2
rpm -qa|grep openssh
rpm -qa|grep rsync

安裝ssh與rsync

Text | 複製
1
2
yum -y install ssh
yum -y install rsync

切換hadoop用戶

Text | 複製
1
 su - hadoop

生成ssh密碼對

Text | 複製
1
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

將id_dsa.pub追加到授權的key中

Text | 複製
1
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

設置授權key權限

Text | 複製
1
2
chmod 600 ~/.ssh/authorized_keys
#權限的設置非常重要,因爲不安全的設置安全設置,會讓你不能使用RSA功能

測試ssh連接

Text | 複製
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用戶

Text | 複製
1
su -

創建/usr/java文件夾

Text | 複製
1
mkdir /usr/java

使用FTP工具上傳至服務器

將壓縮包上傳至/home/hadoop目錄

    注:我這裏使用的是FlashFXP,使用hadoop用戶連接

將壓縮包解壓至/usr/java 目錄

Text | 複製
1
tar zxvf /home/hadoop/jdk-7u80-linux-i586.tar.gz -C /usr/java/

設置環境變量

Text | 複製
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

使環境變量生效

Text | 複製
1
source /etc/profile

測試環境變量設置

Text | 複製
1
java -version

8Hadoop安裝與配置

下載地址

http://hadoop.apache.org/releases.html

    注:我下載的是hadoop-2.7.1.tar.gz

安裝Hadoop

使用FTP工具上傳至服務器

將壓縮包上傳至/home/hadoop目錄

將壓縮包解壓至/usr目錄

Text | 複製
1
tar zxvf /home/hadoop/hadoop-2.7.1.tar.gz -C /usr/

修改文件夾名稱

Text | 複製
1
mv /usr/hadoop-2.7.1/ /usr/hadoop


創建hadoop數據目錄

Text | 複製
1
mkdir /usr/hadoop/tmp

將hadoop文件夾授權給hadoop用戶

Text | 複製
1
chown -R hadoop:hadoop /usr/hadoop/


設置環境變量

Text | 複製
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"

使環境變量生效

Text | 複製
1
source /etc/profile

測試環境變量設置

Text | 複製
1
hadoop version

配置HDFS

切換至Hadoop用戶

Text | 複製
1
su - hadoop

修改hadoop-env.sh

Text | 複製
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

Text | 複製
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

Text | 複製
1
2
3
4
5
6
7
8
vi hdfs-site.xml
#添加如下內容
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

格式化hdfs

Text | 複製
1
hdfs namenode -format

注:出現Exiting with status 0即爲成功

啓動hdfs

Text | 複製
1
2
start-dfs.sh
#停止命令 stop-dfs.sh

注:輸出如下內容

Text | 複製
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

查看進程

Text | 複製
1
jps

注:輸出類似如下內容

Text | 複製
1
2
3
4
1763 NameNode
1881 DataNode
2146 Jps
2040 SecondaryNameNode

使用web查看Hadoop運行狀態

Text | 複製
1
http://你的服務器ip地址:50070/

在HDFS上運行WordCount

創建HDFS用戶目錄

Text | 複製
1
2
hdfs dfs -mkdir /user
hdfs dfs -mkdir /user/hadoop #根據自己的情況調整/user/<username>

複製輸入文件(要處理的文件)到HDFS上

Text | 複製
1
hdfs dfs -put /usr/hadoop/etc/hadoop input

查看我們複製到HDFS上的文件

Text | 複製
1
hdfs dfs -ls input

運行單詞檢索(grep)程序

Text | 複製
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文件夾如已經存在則需要刪除或指定其他文件夾。

查看運行結果

Text | 複製
1
hdfs dfs -cat output/*

配置YARN

修改mapred-site.xml

Text | 複製
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

Text | 複製
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

Text | 複製
1
2
start-yarn.sh
#停止yarn stop-yarn.sh

查看當前java進程

Text | 複製
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運行狀態

Text | 複製
1
http://你的服務器ip地址:8088/

9HDFS常用命令

創建HDFS文件夾

在根目錄創建input文件夾

Text | 複製
1
hdfs dfs -mkdir -p /input

在用戶目錄創建input文件夾

說明:如果不指定“/目錄”,則默認在用戶目錄創建文件夾

Text | 複製
1
2
hdfs dfs -mkdir -p input
#等同於 hdfs dfs -mkdir -p /user/hadoop/input

查看HDFS文件夾

查看HDFS根文件夾

Text | 複製
1
hdfs  dfs  -ls /

查看HDFS用戶目錄文件夾

Text | 複製
1
hdfs  dfs  -ls

查看HDFS用戶目錄文件夾下input文件夾

Text | 複製
1
2
hdfs  dfs  -ls input
#等同與 hdfs  dfs  -ls /user/hadoop/input

複製文件到HDFS

Text | 複製
1
hdfs dfs -put /usr/hadoop/etc/hadoop input

刪除文件夾

Text | 複製
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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章