hadoop集群搭建

hadoop集群的搭建

传送门:本地虚拟机集群的搭建:https://blog.csdn.net/gg_xiajie/article/details/118061715

一、JDK安装

hadoop集群需要jdk的支持,本次以jdk1.8为例,有多种安装方式,最简单的为yum一键安装

yum install ****

此次安装选择手动安装的方式

1、首先下载jdk包

官网地址:

https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

下载图中标记的Linux x64 Compressed Archive,不要下错了

image-20210620143814305

2、上传到liunx

我这里使用的是SecureCRT+FX 8.7组合进行远程操作,你也可以用xftp或者本地文件共享的形式上传

SecureCRT+FX 8.7下载地址:https://download.csdn.net/download/gg_xiajie/19738466

内有注册方法

我是上传到 /usr/local/lib64目录,具体自定义,一般在/usr/local下

3、解压文件

使用tar命令解压

tar -zxvf jdk-8u291-linux-x64.tar.gz
为了方便,我重新命名了一下
mv jdk-8u291-linux-x64/ jdk8
删除压缩包
rm jdk-8u291-linux-x64.tar.gz

4、配置环境变量

vi /etc/profile
在文件尾部追加
export JAVA_HOME=/usr/local/lib64/jdk8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=${PATH}:${JAVA_PATH}

配置完成如下图所示:

image-20210620144433632

wq保存,然后刷新环境变量,让其立即生效

source /etc/profile

测试安装是否成功

java -version
javac

运行结果如下:

image-20210620144631524

至此,jdk安装完毕,其余机器操作相同

这里说一个小技巧,只需要在其他机器上执行第四步就可以了

在安装好的机器上执行下scp命令,将文件拷过去

命令格式:scp [filename] [username@ip:filepath]
文件夹的话需要带上 -r 指令,如下所示(ps:我是配了host,所以用hadoop02代替了192.168.0.102)
scp -r jdk8/ root@hadoop02:/usr/local/lib64/
二、hadoop安装

1、安装前置环境:

由于开始选择的是最小安装,需要安装下常用的环境

Extra Packages for Enterprise Linux 是为“红帽系”的操作系统提供额外的软件包,适用于 RHEL、CentOS 和 Scientific Linux。相当于是一个软件仓库,大多数 rpm 包在官方repository 中是找不到的)

yum install -y epel-release

工具包集合,包含 ifconfig 等命令

yum install -y net-tools

vim:编辑器

yum install -y vim

关闭防火墙

systemctl stop firewalld
systemctl disable firewalld.service

2、安装hadoop

与jdk相同,都是拆箱及用

选用的版本是相对比较新的3.1.3,官网地址:

https://hadoop.apache.org/release/3.1.3.html

下载完之后上传到liunx,上传一份就行,其他机器安装完成之后拷贝即可

解压并重命名

tar -zxvf hadoop-3.1.3.tar.gz
mv hadoop-3.1.3 hadoop

3、配置环境变量

除了直接在系统文件里更改(vim /etc/profile)之外,还有另外一种形式

profile文件中有这么一行,便利所有/etc/profile.d/文件夹下的所有sh文件进行加载

for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do
    if [ -r "$i" ]; then
        if [ "${-#*i}" != "$-" ]; then
            . "$i"
        else
            . "$i" >/dev/null
        fi
    fi
done

我们可以自定义一个文件

cd /etc/profile.d/
vim my-env.sh

将下面的配置贴进去即可

export HADOOP_HOME=/usr/local/lib64/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

然后刷新一下环境变量

source /etc/profile

看下是否安装成功,注意没有**’-’**

hadoop version

image-20210620210137062

至此,第一台机器安装完成

4、拷贝到其他机器

通过scp命令拷贝到另外两台机器

# 命令介绍-r 代表递归,拷贝文件夹使用
scp -r [SourcePath] [targetUserName]@[host]:[targetPath]
# eg:拷贝到192.168.0.102上面
scp -r /usr/local/lib64/hadoop/ root@hadoop02:/usr/local/lib64/
# 拷贝到192.168.0.103上面
scp -r /usr/local/lib64/hadoop/ root@hadoop03:/usr/local/lib64/

5、配置免密ssh登录

ssh免密登录原理 ,在本地的允许访问目录中存放有对方的公钥,对方访问的时候就不需要密码了

# 创建密钥对
ssh-keygen -t rsa

创建完毕后可以在当前用户的目录下的.ssh文件夹中查看,.ssh为隐藏文件,使用ls -a展示隐藏文件

image-20210620222504802

# 查看私钥
cat /root/.ssh/id_rsa
# 查看公钥
cat /root/.ssh/id_rsa.pub

将公钥拷贝到要免密登录的目标机器上

# 为了方便,当前机器也拷贝一份
ssh-copy-id hadoop01
ssh-copy-id hadoop02
ssh-copy-id hadoop03

拷贝完成后目标机器的.ssh出现 一个名为:authorized_keys的文件,这个文件中存放的就是允许无密访问的机器的公钥

image-20210620222857955

这个 时候使用hadoop01这台机器访问其他机器就不需要密码了

三、Hadoop的配置

1、集群部署规划

NameNode 和 SecondaryNameNode 不要安装在同一台服务器

ResourceManager 也很消耗内存,也不要和 NameNode、SecondaryNameNode 配置在同一台机器上

Hadoop01Hadoop02Hadoop03
HDFSNameNode、DataNodeDataNodeSecondaryNameNode 、DataNode
YARNNodeManagerResourceManager、NodeManagerNodeManager

2、配置集群

相关配置文件都在[filepath]/etc/hadoop下,我安装的是在/usr/local/lib64/hadoop/etc/hadoop

image-20210620224936041

(1)核心配置文件core-site.xml

<configuration>
	<!-- 指定 NameNode 的地址 -->
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://hadoop01:8020</value>
	</property>
	<!-- 指定 hadoop 数据的存储目录 -->
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/usr/local/lib64/hadoop/data</value>
	</property>
	<!-- 配置 HDFS 网页登录使用的静态用户为 root -->
	<property>
		<name>hadoop.http.staticuser.user</name>
		<value>root</value>
	</property>
</configuration>

(2)HDFS 配置文件hdfs-site.xml

<configuration>
	<!-- nn web 端访问地址-->
	<property>
		<name>dfs.namenode.http-address</name>
		<value>hadoop01:9870</value>
	</property>
	<!-- 2nn web 端访问地址-->
	<property>
		<name>dfs.namenode.secondary.http-address</name>
		<value>hadoop03:9868</value>
	</property>
</configuration>

(3) YARN 配置文件yarn-site.xml

<configuration>
	<!-- 指定 MR 走 shuffle -->
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>
	<!-- 指定 ResourceManager 的地址-->
	<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>hadoop02</value>
	</property>
	<!-- 环境变量的继承 注意value中不要有回车-->
	<property>
		<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
	</property>
</configuration>

(4)MapReduce 配置文件mapred-site.xml

	<!-- 指定 MapReduce 程序运行在 Yarn 上 -->
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>

(5)配置workers

中间不要有空格,最后不要有空行

hadoop01
hadoop02
hadoop03

每个机器上都是使用相同的配置

四、启动集群

第一次启动需要进行初始化,在hadoop01上进行初始化,因为NameNodeManager在hadoop01上

注意:如果集群在运行过程中报错,需要重新格式化 NameNode 的话,一定要先停 止 namenode 和 datanode 进程,并且要删除所有机器的 data 和 logs 目录,然后再进行格式化。

hdfs namenode -format

1、启动hdfs

在hadoop01启动hdfs,此命令在hadoop/sbin下,之前配置过环境变量,任意位置输入都可以

start-dfs.sh

启动完毕后可以打开可视化图形页面查看

# 在hdfs-site.xml中配置的地址
http://hadoop01:9870/

image-20210621220639301

2、启动yarn

在hadoop02上启动yarn,因为ResourceManager在hadoop02上,命令也在sbin下

start-yarn.sh

同样的,可视化页面在yarn-site.xml中配置了,默认端口为8088

http://hadoop02:8088/

image-20210621221152602

start-dfs.sh

启动完毕后可以打开可视化图形页面查看

# 在hdfs-site.xml中配置的地址
http://hadoop01:9870/

[外链图片转存中…(img-67E82zmX-1624284902964)]

2、启动yarn

在hadoop02上启动yarn,因为ResourceManager在hadoop02上,命令也在sbin下

start-yarn.sh

同样的,可视化页面在yarn-site.xml中配置了,默认端口为8088

http://hadoop02:8088/

[外链图片转存中…(img-DQR1U2Ls-1624284902966)]

至此,hadoop集群环境搭建完毕

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值