發布時間: 2018-01-03 21:59:34
??本集群搭建案例,以5節點為例進行搭建,角色分配如下:
hdp-node-01 NameNode SecondaryNameNode
hdp-node-02 ResourceManager
hdp-node-03 DataNode NodeManager
hdp-node-04 DataNode NodeManager
hdp-node-05 DataNode NodeManager
部署圖如下:
?
1. 服務器準備本案例使用虛擬機服務器來搭建HADOOP集群,所用軟件及版本:
12.0.0
redhat 6.5 64bit
2. 網絡環境準備
采用NAT方式聯網
網關地址:192.168.195.2
3個服務器節點IP地址:192.168.195.128、192.168.195.129、192.168.195.130
子網掩碼:255.255.255.0
3.服務器系統設置
添加HADOOP用戶
為HADOOP用戶分配sudoer權限
同步時間
設置主機名
hdp-node-01
hdp-node-02
hdp-node-03
配置內網域名映射:
192.168.195.128 hdp-node-01
192.168.195.129 hdp-node-02
192.168.195.129 hdp-node-03
配置ssh免密登陸
配置防火墻
4.準備Linux環境
以下是將ip地址改成靜態的ip地址,如果用動態ip地址,以下操作可以不用做:
? 4.1:先將虛擬機的網絡模式選為NAT
4.2:? 修改主機名(要用root)
[root@hdp-node-01 ~]# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=hdp-node-01
保存,然后重啟機器
[root@hdp-node-01 ~]# reboot
4.3: 修改IP,兩種方式:
第一種:通過Linux圖形界面進行修改(強烈推薦)
A、先在動態的ip地址狀態下查詢ip
B、進入Linux圖形界面 -> 右鍵點擊右上方的兩個小電腦 -> 點擊Edit connections -> 選中當前網絡System eth0 -> 點擊edit按鈕 -> 選擇IPv4 -> method選擇為manual -> 點擊add按鈕 ->
添加IP:192.168.195.128 子網掩碼:255.255.255.0 網關:192.168.192.2 DNS:144.144.144.144-> apply
第二種:修改配置文件方式
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
UUID=d0bae0f5-ea26-4844-b6e2-1c24945914ec
ONBOOT=no
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=192.168.195.128
PREFIX=32
GATEWAY=192.168.195.2
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
HWADDR=00:0C:29:DC:BA:3E
LAST_CONNECT=1509437953
4.4: 修改主機名和IP的映射關系
vim /etc/hosts
192.168.195.128 hdp-node-01
4.5:關閉防火墻
#查看防火墻狀態
service iptables status
#關閉防火墻
service iptables stop
#查看防火墻開機啟動狀態
chkconfig iptables --list
#關閉防火墻開機啟動
chkconfig iptables off
或者修改防火墻的訪問規則
[root@hdp-node-01 ~]# vim /etc/sysconfig/iptables
在該文件中加上
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
重啟防火墻
[root@hdp-node-01 ~]#service iptables restart
5:安裝JDK
(1) 上傳jdk安裝包,規劃安裝目錄 /opt/jdk1.8.0_121
(2) 解壓安裝包
[root@hdp-node-01 opt]# tar -zxvf jdk-8u121-linux-x64.gz –C /opt
(3) 配置環境變量 /etc/profile
vim /etc/profile
#在文件對應的位置添加
JAVA_HOME=/opt/jdk1.8.0_121
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
#刷新配置
source /etc/profile
6:安轉hadoop-2.8.1
先上傳hadoop的安裝包到服務器上去/home/hadoop/apps
解壓hadoop
[hadoop@hdp-node-01 apps]$ tar zxvf hadoop-2.8.1.tar.gz
注意:hadoop2.x的配置文件$HADOOP_HOME/etc/hadoop
偽分布式需要修改5個配置文件 ?6.1:配置hadoop?
第一個:hadoop-env.sh?
? vim hadoop-env.sh?
? # The java implementation to use. export JAVA_HOME=/opt/jdk1.8.0_121
? 第二個:core-site.xml?
<!-- 指定HADOOP所使用的文件系統schema(URI),HDFS的老大(NameNode)的地址 -->
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hdp-node-01:9000</value>
</property>
<!-- 指定hadoop運行時產生文件的存儲目錄 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/apps/hadoop-2.8.1/tmp</value>
</property>
</configuration>
第三個:hdfs-site.xml
?<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/data/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/data/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.secondary.http.address</name>
<value>hdp-node-01:50090</value>
</property>
<property>
<name>dfs.blocksize</name>
<value>134217728</value>
</property>
</configuration>
?注意:需要先創建/home/hadoop/data/name和/home/hadoop/data/data兩個目錄
[hadoop@hdp-node-01 ~]$ mkdir -p ~/data/name
[hadoop@hdp-node-01 ~]$ mkdir -p ~/data/data
?第四個:mapred-site.xml?
mv mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
<!-- 指定mr運行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
?
第五個:yarn-site.xml?
<!-- 指定YARN的老大(ResourceManager)的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hdp-node-01</value>
</property>
<!-- reducer獲取數據的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
第六個:vi slaves
hdp-node-02
hdp-node-03
6.2: 將hadoop添加到環境變量?
vim /etc/profile?
?HADOOP_HOME=/home/hadoop/apps/hadoop-2.8.1JAVA_HOME=/opt/jdk1.8.0_121
PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export JAVA_HOME PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
? source /etc/profile
6.3:?格式化namenode(是對namenode進行初始化)
hdfs namenode -format?
6.4:配置datanode將上面配置好的hadoop-2.8.1拷貝到hdp-node-02和hdp-node-03機器
[hadoop@hdp-node-01 apps]$ scp -r hadoop-2.8.1 hadoop@hdp-node-02:/home/hadoop/apps
注意:在hdp-node-02機器中/home/hadoop目錄,要先創建apps
6.5:啟動hadoop 先啟動HDFS
sbin/start-dfs.sh
再啟動YARN
sbin/start-yarn.sh
6.6:驗證是否啟動成功 使用jps命令驗證
27408 NameNode
28218 Jps
27643 SecondaryNameNode
28066 NodeManager
27803 ResourceManager
27512 DataNode
http://192.168.195.128:50070 (HDFS管理界面)
7:配置ssh免登陸
以下操作只需要在namenode機器中配置即可
A、用root用戶登錄修改SSH配置文件"/etc/ssh/sshd_config"的下列內容。
檢查下面幾行前面”#”注釋是否取消掉:
RSAAuthentication yes # 啟用 RSA 認證
PubkeyAuthentication yes # 啟用公鑰私鑰配對認證方式
AuthorizedKeysFile %h/.ssh/authorized_keys # 公鑰文件路徑
然后重啟sshd服務
[root@hdp-node-04 .ssh]# service sshd restart
B、生成ssh免登陸密鑰
#進入到我的home目錄
[hadoop@hdp-node-01 hadoop]$ cd ~/.ssh
[hadoop@hdp-node-01 .ssh]$ ssh-keygen -t rsa (四個回車)
執行完這個命令后,會生成兩個文件id_rsa(私鑰)、id_rsa.pub(公鑰)
將公鑰拷貝到要免密登陸的目標機器上
[hadoop@hdp-node-01 .ssh]$ cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys
[hadoop@hdp-node-01 .ssh]$ ssh-copy-id hadoop@hdp-node-01
[hadoop@hdp-node-01 .ssh]$ssh-copy-id hadoop@hdp-node-02
[hadoop@hdp-node-01 .ssh]$ssh-copy-id hadoop@hdp-node-03
[hadoop@hdp-node-01 .ssh]$ssh hadoop@hdp-node-02
與本機完成免密登錄,將authorized_keys權限改成600
---------------------------
ssh免登陸:
生成key:
---------------------------
ssh免登陸:
生成key:
ssh-keygen
復制從A復制到B上:
ssh-copy-id B
驗證:
ssh localhost/exit,ps -e|grep ssh
ssh A #在B中執行
?
?8:測試:
? 1、查看集群狀態命令:
hdfs dfsadmin -report ?
2、上傳文件到HDFS從本地上傳一個文本文件到hdfs的/wordcount/input目錄下
[HADOOP@hdp-node-01 ~]$ HADOOP fs -mkdir -p /wordcount/input
[HADOOP@hdp-node-01 ~]$ HADOOP fs -put /home/HADOOP/somewords.txt /wordcount/input
上一篇: {大數據}HDFS詳解
下一篇: {大數據}Zookeeper簡介