1. 程式人生 > >虛擬機器下建立Hadoop環境

虛擬機器下建立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 firewalldRemoved 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

                     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地址)