1. 程式人生 > >CentOS 7 快速架設hadoop 2.5.1叢集

CentOS 7 快速架設hadoop 2.5.1叢集

經過幾天的折騰,總算成功了~賬號註冊到現狀近N年了,這是第一篇部落格~大笑 1、軟體準備
a.OS:CentOS-7.0-1406-x86_64-DVD.iso --去CentOS官網下
b.JDK:jdk-7u71-linux-x64.gz --oracle官網下,至於1.8是否可行,沒試
c.Hadoop: hadoop-2.5.1.tar.gz --hadoop官網下
d.虛擬機器: VMware Player --小巧夠用, 其他虛擬機器也行

2.環境介紹
a.主機:
192.168.1.100 master
192.168.1.101 slave1
192.168.1.102 slave2
192.168.1.103 slave3

b.使用者:
Master SSH無密碼登陸slaver
主機使用者1:  root  密碼 hadoop
主機使用者2:  hadoop  密碼 hadoop

c.JDK位置:
/usr/local  即/usr/local/jdk1.7.0_71 

d.hadoop 位置:
/opt   即/opt/hadoop-2.5.1

e.SSH公匙位置
/home/hadoop/.ssh/ 即hadoop使用者的根目錄下的.shh隱藏目錄,hadoop登陸後 $cd ~/.ssh 可進入

3、安裝思路
    由於master與slave除了IP地址不同外,其他配置基本相同(懶的話主機名不改都沒問題^_^),所以思路就是配置好Master後將虛擬機器複製,然後修改網路配置,將是最簡單的辦法。

4、安裝步驟
a.建立虛擬機器:
測試的話10G硬碟 2G RAM足夠了),最小化安裝centos7。其中:
分割槽自動
root密碼 hadoop 另建立一個新使用者hadoop 密碼hadoop 
主機名master(懶得後面改) 
ip地址設定靜態(懶得後面配置,並啟動網絡卡):
IP:192.168.1.100 
mask:255.255.255.0 
gateway:192.168.1.1 
DNS1:192.168.1.1 
DNS2:8.8.8.8

b-關閉防火牆
systemctl stop firewalld.service    --關閉防火牆
systemctl disable firewalld.service --永久關閉防火牆

c.增加五個工具(後續操作,若#都是root使用者  $的都是hadoop使用者,本節可選):
--vim
 #yum -y install vim
--ifconfig
#yum -y net-tools
--時間同步
#yum -y install ntp
#ntpdate us.pool.ntp.org
#cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
--系統資訊
#yum install -y sysstat
--tree命令
#yum install -y tree

d.修改hosts
# vim /etc/hosts
按i進入插入模式,用#號註釋掉已有,加入四行,:
192.168.1.100 master
192.168.1.101 slave1
192.168.1.102 slave2
192.168.1.103 slave3
按ESC :wq回車

e.修改ip
若安裝沒設定IP或者網絡卡沒有啟動:
[
[email protected]
~]# ip addr 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 
inet 127.0.0.1/8 scope host lo 
valid_lft forever preferred_lft forever 
inet6 ::1/128 scope host 
valid_lft forever preferred_lft forever 
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 
link/ether 00:0c:29:3d:ed:03 brd ff:ff:ff:ff:ff:ff 
inet 192.168.1.11/24 brd 192.168.88.255 scope global eno16777736 
valid_lft forever preferred_lft forever 
inet6 fe80::20c:29ff:fe3d:ed03/64 scope link 
valid_lft forever preferred_lft forever
注意看2後面的eno16777736就是網絡卡名,然後編輯網絡卡配置:
[
[email protected]
~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777736
HWADDR=00:0C:29:3D:ED:03
TYPE=Ethernet
BOOTPROTO=static            ##重要,否則dhcp了
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
BROADCAST=192.168.1.255
DNS1=192.168.1.1
DNS2=8.8.8.8
ONBOOT=yes                  ##重要,這個為no則系統啟動不啟動該網絡卡
至少保證以上資訊,其他的不管,重啟網路:
#service network restart

5、SSH無密碼登陸
#su hadoop
$cd ~
$mkdir .ssh
$chmod 744 .ssh ##許可權重要,預設許可權可以,本步驟可選
$ssh-keygen -t rsa -P '' ##ssh後無空格!!!
$cat ~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys ##將公鑰追加到AuthorizedKeysFile
$chmod 644 ~/.ssh/authorized_keys ##許可權重要,預設許可權不行
$su
#vim /etc/ssh/sshd_config
去除前面的#
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

#service sshd restart #重啟ssh服務
$su hadoop
$ssh localhost 或ssh master
Last login: Sat Nov 8 20:16:23 2014 #ssh無密碼登陸成功

6、連線網路共享,取得安裝程式(懶人不架設FTP伺服器)
其中//192.168.1.9 是臺windows 7的電腦,共享目錄share,使用者名稱密碼均是share,裡面放有下載好的JDK(jdk-7u71-linux-x64.gz)與 hadoop 2.5.1 (hadoop-2.5.1.tar.gz):
#mkdir /mnt/share #建立共享檔案掛載點
#mount -t cifs -o username="share",password="share" //192.168.1.9/share  /mnt/share
#cd /mnt/share

5.安裝jdk
#tar xzvf jdk-7u71-linux-x64.gz -C /usr/local/
#vim /etc/profile 
export JAVA_HOME=/usr/local/jdk1.7.0_71 
export PATH=$PATH:$JAVA_HOME/bin 
#source /etc/profile ##  刷新系統配置

確認版本java安裝成果
# java -version 
java version "1.7.0_71" 
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)

7、安裝配置hadoop
#cd /mnt/share
#tar xzvf hadoop-2.5.1.tar.gz -C /opt/
#chown -R hadoop:hadoop /opt/hadoop-2.5.1 
# vim /etc/profile  ##修改系統配置
 export HADOOP_HOME=/opt/hadoop-2.5.1
 export PATH=$PATH:$HADOOP_HOME/bin
# source /etc/profile ##  刷新系統配置
# su hadoop
$ cd /opt/hadoop-2.5.1
$ mkdir -p dfs/name
$ mkdir -p dfs/data
$ mkdir -p tmp
$ cd etc/hadoop

a.配置所有slave節點
$ vim slaves
slave1
slave2
slave3

b.修改hadoop-env.sh和yarn-env.sh
$ vim hadoop-env.sh
export JAVA_HOME=/usr/local/jdk1.7.0_71

$ vim yarn-env.sh
export JAVA_HOME=/usr/local/jdk1.7.0_71

c.修改core-site.xml
$ vim etc/hadoop/core-site.xml

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop-2.5.1/tmp</value>
</property>
</configuration>
注意:/opt/hadoop-2.5.1/tmp前面不能有 file!!!與hdfs-site.xml不一樣,而且所有內容中不能有空格,結尾處也不行!如<value>/opt/hadoop-2.5.1/tmp </value>會出錯(tmp後有空格)。

d.修改hdfs-site.xml
$ vim etc/hadoop/hdfs-site.xml

<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/opt/hadoop-2.5.1/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/opt/hadoop-2.5.1/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>

e.修改mapred-site.xml
 $ cd /opt/hadoop-2.5.1
 $ cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
 $ vim etc/hadoop/mapred-site.xml

<configuration> 
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

f.配置yarn-site.xml
(a).偽分佈配置:
$ vim etc/hadoop/yarn-site.xml:
<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

(b)叢集配置:
$ vim etc/hadoop/yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
</configuration>

8、關機,複製三臺slave
#shutdown

9、啟動slave1,修改網絡卡配置與主機名
#ip addr
[[email protected] ~]# ip addr 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 
inet 127.0.0.1/8 scope host lo 
valid_lft forever preferred_lft forever 
inet6 ::1/128 scope host 
valid_lft forever preferred_lft forever 
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 
link/ether 00:0c:29:fd:1d:23 brd ff:ff:ff:ff:ff:ff 
inet 192.168.88.11/24 brd 192.168.88.255 scope global eno16777736 
valid_lft forever preferred_lft forever 
inet6 fe80::20c:29ff:fe3d:ed03/64 scope link 
valid_lft forever preferred_lft forever
注意看2:後面的eno16777736就是網絡卡名,然後編輯網絡卡配置:
# vim /etc/sysconfig/network-scripts/ifcfg-eno16777736
HWADDR=00:0C:29:FD:1D:23   ##關鍵1,按剛才查出來的mac地址,eno16777736下面那行
TYPE=Ethernet
BOOTPROTO=static           ##關鍵2
IPADDR=192.168.1.101       ##關鍵3
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
BROADCAST=192.168.1.255
DNS1=192.168.1.1
DNS2=8.8.8.8
ONBOOT=yes                 ##關鍵4
至少保證以上資訊
# service network restart  --重啟網路

修改主機名:
# hostnamectl set-hostname slave1

10、啟動slave2/slave2,修改網絡卡配置與主機名

11、格式化namenode
$ cd /opt/hadoop-2.5.1
$ hdfs namenode -format

12 啟動hdfs
$ ./sbin/start-dfs.sh
$ ./sbin/start-yarn.sh
--用pi程式測試:
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.1.jar pi 2 20000

13 檢查啟動情況
http://192.168.1.100:8088
http://192.168.1.100:50070

14、關閉hadoop
$ ./sbin/stop-all.sh