hadoop安装与部署

本文详细介绍在CentOS7环境下,从环境准备到Hadoop3集群的完整搭建过程,包括静态IP设置、主机名修改、防火墙关闭、JDK与Hadoop安装、SSH免密配置、远程连接设置、配置文件修改及集群启动测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境准备: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.youkuaiyun.com/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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值