虛擬機器下建立Hadoop環境
2018/6/26
本文大多參考博主luck_nhb的搭建Hadoop叢集,只是加入了自己的一點想法、邏輯,有興趣的可以去看原文https://blog.csdn.net/luck_nhb/article/details/79444635
本文多數命令不能直接複製、貼上,請手打!!!
一、準備工具
(1)VMware14、centos7系統
(2)xshell工具
二、開始搭建
(1)一臺hadoop1為master,其餘兩臺是slave1、slave2
下載安裝scp
yum -y install openssh-clients
centos6關閉防火牆
serviece iptables stop //關閉防火牆
chkconfig iptables off //禁止開機自啟動
service iptables status //檢視防火牆狀態
CentOS7版本後防火牆預設使用firewalld,因此在CentOS7中關閉防火牆使用以下命令//臨時關閉
systemctl stop firewalld
//禁止開機啟動
systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
(2)修改主機名
hostnamectl set-hostname hadoop4
hostnameclt status //檢視自己主機名改了沒
(3)查詢電腦IP ,固定為靜態ip
ifconfig //檢視自己的IP
這裡首先是進入/etc/sysconfig/network-scripts中檢視現有的配置檔案
cd /etc/sysconfig/network-scripts
這裡需要使用的配置檔案是:ifcfg-eno16777736,每個人的可能不一樣,切換root許可權,通過vim進到裡面
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
UUID=ae05ccde-6a29-4332-b486-f3042da73ac0
DEVICE=eno16777736
ONBOOT=no
這裡說一下需要修改的位置:
#修改
BOOTPROTO=static #這裡講dhcp換成ststic
ONBOOT=yes #將no換成yes
#新增
IPADDR=192.168.85.100 #靜態IP
(4)新增主機對映
vi /etc/hosts //編輯hosts檔案
新增各個主機名和IP地址,例:
二、設定免密登入
ssh localhost
cd /root/.shh
ssh-keygen -t rsa
ssh-copy-id hadoop2
ssh-copy-id hadoop3
驗證成功與否
ssh hadoop2
退出
exit
三、配置java環境
1.首先下載JDK壓縮包
並且將它解壓到/usr
解壓命令
將解壓出來的包名字改為Java
mv jdk1.7.0_79 java
2.刪除自帶openjdk
rpm -qa | grep java 檢視已有的JDK版本資訊(帶箭頭的都是系統自帶的)
通過 rpm -e -nodeps jdk檔名刪除
例如:rpm -e --nodeps java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64
然後再用 rpm -qa | grep java 看是否刪除
3.修改配置檔案(每臺主機都要做這個事情)
修改資訊
JAVA_HOME=JAVA路徑(到bin之前)
JRE_HOME=JRE路徑
.........
export JAVA_HOME JRE_HOME CLASS_PATH PATH
配置完一定要執行這一步
為了使配置的變數生效
4.拷貝java檔案到其他兩臺主機
四、Hadoop搭建
1.下載Hadoop壓縮包
解壓到/usr/
將解壓完的包改名為Hadoop
2.配置Hadoop的環境變數(每臺主機都要實現)
vim /etc/profile
增加下面幾句:
export HADOOP_HOME=本機的hadoop安裝路徑
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
儲存後退出
執行
source /etc/profile
3.修改配置檔案,進/usr/hadoop/etc/hadoop
(1)hadoop-env.sh,用vim進入
(2)core-site.xml,用vim進入
修改資訊:
<!-- 指定HDFS老大(namenode)的通訊地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:9000</value>
</property>
<!--指定hadoop執行時產生檔案的儲存路徑 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/Hadoop/tmpdata</value>
</property>
放在兩個<configuration>之間
(3)hdfs-site.xml,用vim進入
修改資訊:
<!-- 設定namenode的http通訊地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop1:50070</value>
</property>
<!--設定namenode存放的路徑 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/Hadoop/namenode</value>
</property>
<!--設定hdfs副本數量 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!--設定datanode存放的路徑 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/Hadoop/datanode</value>
</property>
(4)mapred-site.xml
mv mapred-site.xml.template mapred-site.xml //修改檔名
修改資訊:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
(5)yarn-site.xml
修改資訊:
<!-- 設定 resourcemanager 在哪個節點-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop1</value>
</property>
<!-- reducer取資料的方式是mapreduce_shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
4.拷貝檔案到其餘主機上
叢集格式化
hadoop namenode –format
啟動叢集
cd /usr/hadoop/etc/hadoop/sbin
./start-all.sh
驗證是否正常開啟
切記不要多次格式化,否則會無法開啟DataNode(解決辦法刪除namenode,datanode,tmpdata)
也可以網站開啟192.168.159.129:50070進入看看是否能連線(192.168.159.129是hadoop1的IP地址)