hadoop安裝與部署

環境準備:centOS7,hadoop3
步驟:
第一步:修改靜態ip
查看當前網卡名稱
ifconfig
編輯ip地址配置文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33
修改BOOTPROTO的值爲static,ONBOOT爲yes,並在末尾添加IPADDR,NETMASK等

BOOTPROTO=static
ONBOOT=yes
IPADDR=“192.168.209.130”
NETMASK=“255.255.255.0”
GATEWAY=“192.168.209.2”
DNS1=“8.8.8.8”
DNS2=“8.8.4.4”

重啓
service network restart

第二步:修改主機名
vim /etc/hosts
添加如下代碼,三臺虛擬機對應的IP地址和主機名
192.168.209.128 hadoop1
192.168.209.129 hadoop2
192.168.209.130 hadoop3

第三步:關閉防火牆
查看防火牆狀態

firewall-cmd --state

停止firewall

systemctl stop firewalld.service

禁止firewall開機啓動

systemctl disable firewalld.service 

第四步:安裝JDK
1、創建 java文件夾
mkdir /opt/software
2、切換到java目錄下
cd /opt/software
3、下載Jdk

 wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-x64.tar.gz"

4、解壓
tar -zxvf jdk-8u141-linux-x64.tar.gz
5、編輯配置文件
vim /etc/profile 增加如下配置

JAVA_HOME=/opt/software/jdk1.8.0_141
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH

6、使配置文件生效 source /etc/profile
第五步:安裝hadoop
1、切換到壓縮目錄下
cd /opt/software/
2、解壓
tar -xzvf hadoop-3.1.2.tar.gz
3、配置hadoop中的hadoop-env.sh
cd /hadoop-3.1.2/etc/hadoop/
vim hadoop-env.sh
4、修改hadoop-env.sh文件中JAVA_HOME 路徑
export JAVA_HOME=/opt/software/jdk1.8.0_141
5、編輯配置文件
vim /etc/profile
6、在文件末尾添加內容

export HADOOP_HOME=/opt/software/hadoop-3.1.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

7、讓修改後的文件生效
source /etc/profile
第六步:ssh免密配置
1、因爲我是使用root用戶進行操作的,所以我切換到root目錄下
cd /root/
2、如果沒有使用ssh進行連接過其他服務器,那麼此目錄下不會有.ssh文件夾,此時需要執行以下命令生成.ssh文件,如果已存在則進行下一步
mkdir .ssh
3、進.ssh目錄
cd .ssh/
4、創建公鑰和私鑰
ssh-keygen -t rsa
5、不斷的按enter鍵,自動生成公鑰和私鑰
6、把公鑰拷貝到需要無密連接的主機中
ssh-copy-id hadoop2
到此,hadoop1可以實現免密登錄hadoop2,但是hadoop2不能免費登錄hadoop1,可以重複以上方法進行相互配置

第七步:nodepad++遠程連接hadoop
參考博客:https://blog.csdn.net/pdsu161530247/article/details/81702176
可能會遇到的問題:連接成功後目錄只有root,沒有其它目錄
解決辦法:“Initial remote directory”設置成“/”就可以看到根目錄了
在這裏插入圖片描述
第八步:配置文件
(一) 配置core-site.xml文件
1.打開hadoop1下面的core-site.xml
/opt/software/hadoop-3.1.2/etc/hadoop/core_site
2.在core-site.xml文件末尾指定NameNode地址和存儲目錄

<configuration>
<!--指定HDFS中NameNode的地址-->
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://hadoop1:8020</value>
	</property> 
	<!--指定hadoop運行時產生文件的存儲目錄-->
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/opt/software/hadoop-3.1.2/data/tmp</value>
	</property>
</configuration>

(二)配置HDFS
1.配置hadoop-env.sh文件(前文已經配置過,此處不再配置)
(1).打開hadoop1下面的hadoop-env.sh
/opt/software/hadoop-3.1.2/etc/hadoop/hadoop-env.sh
(2).在文件中添加代碼

export JAVA_HOME=/opt/software/jdk1.8.0_141

2.配置hdfs-site.xml文件
(1)打開hadoop1下面的hdfs-site.xml
/opt/software/hadoop-3.1.2/etc/hadoop/hdfs-site.xml
(2)在文件中添加代碼

<configuration>	
	<property>
		<name>dfs.replication</name> //hdfs數據塊的複製份數,默認3,理論上份數越多跑數速度越快,但是需要的存儲空間也更多。有錢人可以調5或者6
		<value>3</value>
	</property>
	<property>
        <name>dfs.namenode.secondary.http-address</name>//SNN的tracker頁面監聽地址和端口
        <value>hadoop3:9870</value> //此處千萬不要寫50070,50070這是hadoop2配置的端口,hadoop3請配置9870,否則後面登錄192.168.209.128:50070無法進入
    </property>
</configuration>

(3)slaves
hadoop3.0以後slaves更名爲workers,所以只要配置workers就行。
在這裏插入圖片描述
3.配置yarn
配置yarn-site.xml文件

<configuration>
<!-- Site specific YARN configuration properties -->
<!-- reducer獲取數據的方式 -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
<!-- 指定YARN的ResourceManager的地址 -->
	<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>hadoop2</value>
	</property>
	</configuration>

在這裏插入圖片描述
4.mapreduce
配置mapred-site.xml文件

<configuration>
<!-- 指定mr運行在yarn上 -->
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>
</configuration>

在這裏插入圖片描述
(三)在集羣上分發所有文件

  1. 編寫集羣分發腳本xsync:循環複製文件到所有節點的相同目錄下
    (1)在/usr/local/bin目錄下創建xsync文件(在/usr/local/bin這個目錄下存放的腳本,可以在系統任何地方直接執行,需要制定路徑。),文件內容如下:
#!/bin/bash
#1 獲取輸入參數個數,如果沒有參數,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi

#2 獲取文件名稱
p1=$1
fname=`basename $p1`
echo fname=$fname

#3 獲取上級目錄到絕對路徑
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

#4 獲取當前用戶名稱
user=`whoami`

#5 循環
for((host=103; host<105; host++)); do
        #echo $pdir/$fname $user@hadoop$host:$pdir
        echo --------------- hadoop$host ----------------
        rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done

(2)修改腳本 xsync 具有執行權限

chmod 777 xsync   //777 是最高權限,有讀、寫、執行權限

(3)利用xsync腳本分發hadoop文件(即把hadoop1中的hadoop文件分發到Hadoop2和hadoop3中)

cd /opt/software/hadoop-3.1.2/etc/            //切換到hadoop目錄下
xsync hadoop/                                        //實現分發

(四)查看文件分發情況
1.編寫xcall腳本:爲了在所有主機上同時執行相同的命令
在/usr/local/bin目錄下創建xcall文件,文件內容如下:

#!/bin/bash
pcount=$#
if((pcount==0));then
        echo no args;
        exit;
fi

echo -------------localhost----------
$@
for((host=1; host<=8; host++)); do
        echo ----------hadoop$host---------
        ssh hadoop$host $@
done

2.修改腳本 xcall 具有執行權限

chmod 777 xcall

3.查看文件分發情況

xcall cat /opt/software/hadoop-3.1.2/etc/hadoop/workers

第六步:集羣啓動及測試
1.第一次啓動,需要先格式化namenode

hdfs namenode -format

2.修改start-dfs.sh,stop-dfs.sh,start-yarn.sh,stop-yarn.sh四個文件
在/hadoop/sbin路徑下:
將start-dfs.sh,stop-dfs.sh兩個文件頂部添加以下參數

#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

還有,start-yarn.sh,stop-yarn.sh頂部也需添加以下:

#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

3.啓動

[root@hadoop1 hadoop]# start-dfs.sh

此時會有如下報錯:

[root@hadoop1 hadoop]# start-dfs.sh
WARNING: HADOOP_SECURE_DN_USER has been replaced by HDFS_DATANODE_SECURE_USER. Using value of HADOOP_SECURE_DN_USER.
Starting namenodes on [hadoop1]
上一次登錄:六 8月 10 20:01:51 CST 2019pts/0 上
hadoop1: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
Starting datanodes
上一次登錄:六 8月 10 22:28:39 CST 2019pts/0 上
hadoop1: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
Starting secondary namenodes [hadoop1]
上一次登錄:六 8月 10 22:28:40 CST 2019pts/0 上
hadoop1: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

4.配置免密登陸(對本機配置)
報這個錯說明本機沒有配置免密登陸,這裏有個疑問,前面已經配置過了,爲什麼這裏還要配置,這是因爲前面對別的主機進行配置,對本機也要進行配置

ssh-keygen -t rsa

一直按enter之後,輸入命令:

[root@hadoop1 hadoop]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@hadoop1

5.啓動

[root@hadoop1 hadoop]# start-all.sh

可能會有如下報錯

[root@hadoop1 phil]# start-all.sh
WARNING: HADOOP_SECURE_DN_USER has been replaced by HDFS_DATANODE_SECURE_USER. Using value of HADOOP_SECURE_DN_USER.
Starting namenodes on [hadoop1]
上一次登錄:六 8月 17 11:35:11 CST 2019pts/0 上
Starting datanodes
上一次登錄:六 8月 17 11:36:03 CST 2019pts/0 上
Starting secondary namenodes [hadoop1]
上一次登錄:六 8月 17 11:36:08 CST 2019pts/0 上
Starting resourcemanager
上一次登錄:六 8月 17 11:36:22 CST 2019pts/0 上
Starting nodemanagers
上一次登錄:六 8月 17 11:38:21 CST 2019pts/0 上

解決辦法:

vim sbin/start-dfs.sh 
vim sbin/stop-dfs.sh 

HDFS_DATANODE_USER=root  
HADOOP_SECURE_DN_USER=hdfs  
HDFS_NAMENODE_USER=root  
HDFS_SECONDARYNAMENODE_USER=root

改成

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