基于华为云服务器Ubuntu22.04部署hadoop-3.3.5集群配置教程(踩坑已填平)

       由于最近在网上查阅资料发现很少有基于云服务器来搭建部署hadoop集群的文章,而且使用新版的hadoop的又更少了,所以自己根据网上搭建的例子结合成功实现了部署,这里我就来分享一下的部署过程。

1.服务器

这里我选用的是三个华为云的服务器,具体配置看个人。这里我是使用Ubuntu22.04操作系统。

按照流程创建好后,每个服务器都会有一个公网ip与内网ip。

账号先使用默认的root(管理员)账户。

设置服务器的安全组,除了原本已经配置的端口,这里我又开放了几个常用的端口以防碰到错误。

2.安装使用FinalShell

由于服务器端的操作系统一般都是没有界面的,所以这里我们需要使用一些工具来提升我们的工作效率。

​​​​​​FinalShell安装使用教程

点击确认并连接

第一次连接进入点击“接受并保存

2.1修改主机名(节点)

“root + @ + 主机名” 如果在创建服务器的时候没有修改主机名的话,最好现在规范一下主机名。输入以下命令打开 hostname文件修改主机名(服务器已带有vim 没有的话得自己装)

sudo vim /etc/hostname

按“i”进入插入模式,修改主机名,这三台服务器分别命名为huaweiyun1、huaweiyun2、huaweiyun3。按Esc后 输入  :wq   进行退出并保存。

                      huaweiyun1节点        huaweiyun2节点         huaweiyun3节点

只要是与修改文件相关的,也可以通过FinalShell根据路径双击打开文件修改保存!

2.2修改主机名映射(节点)(坑多

在 huaweiyun1节点 中执行如下命令打开并修改 huaweiyun1节点 中的“/etc/hosts”文件

sudo vim /etc/hosts

在hosts文件中增加如下三条IP和主机名映射关系:

huaweiyun1的hosts

huaweiyun2与huaweiyun3的hosts也类似,区别就是“谁节点下的hosts文件 谁就使用内网ip

huaweiyun1:huaweiyun1 网ip;huaweiyun2 外网ip;huaweiyun3 外网ip

huaweiyun2:huaweiyun1 外网ip;huaweiyun2 网ip;huaweiyun3 外网ip

huaweiyun3:huaweiyun1 外网ip;huaweiyun2 外网ip;huaweiyun3 网ip

"127.0.0.1 主机名"的一定要删掉或者注释掉,不然会hadoop启动的时候打开的端口都是从127.0.0.1的本机ip上打开的,这样子主从节点就无法交互。

另外在华为云服务器上部署的Linux系统重启后/etc/hosts自动添加主机名解析

在每次服务器重启的时候都会在hosts文件里添加"127.0.0.1 主机名",所以我们就要取消该配置

sudo vim /etc/cloud/cloud.cfg

注释掉manage_etc_hosts配置项

这样重新启动时就不会再往hosts文件里添加"127.0.0.1 主机名"了

3.创建hadoop用户(节点)

输入如下命令创建hadoop用户

sudo useradd -m hadoop -s /bin/bash

接着使用如下命令设置密码,可以简单设置,按提示输入两次密码:

sudo passwd hadoop

为 hadoop 用户增加管理员权限,方便部署

sudo adduser hadoop sudo

接下来我们可以使用su命令来切换用户

su hadoop

也可以在FinalShell里设置启动时登录的用户为hadoop用户(推荐在配置完并成功运行后再去设置)

4.安装Java环境(节点)

Hadoop3.3.5需要JDK版本在1.8及以上。需要按照下面步骤来自己手动安装JDK1.8。

这里我使用的是jdk-8u371-linux-x64.tar.gz ,只要是jdk8就行,后边教程注意修改就好

度盘链接https://pan.baidu.com/s/1gJYjjicxfBLPTqE6UISDVw?pwd=star

把压缩格式的文件jdk-8u162-linux-x64.tar.gz上传到所有服务器的home目录下,可以使用FinalShell上传文件。

执行如下Shell命令(注意:当前登录用户名是hadoop)

cd /usr/lib
sudo mkdir jvm #创建/usr/lib/jvm目录用来存放JDK文件
cd ~ #进入hadoop用户的主目录
cd home  #注意区分大小写字母,刚才已经通过FinalShell把JDK安装包jdk-8u162-linux-x64.tar.gz上传到该目录下
sudo tar -zxvf ./jdk-8u162-linux-x64.tar.gz -C /usr/lib/jvm  #把JDK文件解压到/usr/lib/jvm目录下
cd /usr/lib

创建/usr/lib/jvm目录用来存放JDK文件

sudo mkdir jvm
cd home
sudo tar -zxvf ./jdk-8u371-linux-x64.tar.gz -C /usr/lib/jvm  

把JDK文件解压到/usr/lib/jvm目录下

JDK文件解压缩以后,可以执行如下命令到/usr/lib/jvm目录查看一下

cd /usr/lib/jvm
ls

可以看到,在/usr/lib/jvm目录下有个jdk1.8.0_371目录。
下面继续执行如下命令,设置环境变量:

cd ~
vim ~/.bashrc

使用vim编辑器打开了hadoop这个用户的环境变量配置文件,请在这个文件的开头位置,添加如下几行内容:

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_371
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

 保存.bashrc文件并退出vim编辑器。然后,继续执行如下命令让.bashrc文件的配置立即生效:

source ~/.bashrc

可以使用如下命令查看jdk是否安装成功:

java -version

至此,就成功安装了Java环境。下面就可以进入Hadoop的安装。

5.安装hadoop-3.3.5(节点)

Hadoop安装文件,可以到Hadoop官网下载hadoop-3.3.5.tar.gz

或者度盘:链接: https://pan.baidu.com/s/1EHUSJrrMOQEs7WXIACXTSQ?pwd=star 

下载后上传到home目录下,选择将 Hadoop 安装至 /usr/local/ 中:

sudo tar -zxf ~/home/hadoop-3.3.5.tar.gz -C /usr/local
cd /usr/local/
sudo mv ./hadoop-3.3.5/ ./hadoop 

修改文件权限

sudo chown -R hadoop ./hadoop

已经介绍过PATH变量的配置方法。可以按照同样的方法进行配置,这样就可以在任意目录中直接使用hadoop、hdfs等命令(节点都要改)

 下面继续执行如下命令,设置环境变量:

cd ~
vim ~/.bashrc

使用vim编辑器打开了hadoop这个用户的环境变量配置文件,请在这个文件的开头位置,添加如下几行内容:

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

 保存.bashrc文件并退出vim编辑器。然后,继续执行如下命令让.bashrc文件的配置立即生效:

source ~/.bashrc

Hadoop 解压后即可使用。输入如下命令来检查 Hadoop 是否可用,成功则会显示 Hadoop 版本信息:

hadoop version

6.SSH无密码登录节点(节点)

必须要让huaweiyun1节点可以SSH无密码登录到各个Slave节点上。首先,生成huaweiyun1节点的公匙,如果之前已经生成过公钥,必须要删除原来生成的公钥,重新生成一次,因为前面我们对主机名进行了修改。具体命令如下:(注意此时各个节点的用户应该是hadoop不是root)

cd ~/.ssh 

 如果没有该目录,先执行一次ssh localhost

rm ./id_rsa* 
ssh-keygen -t rsa 

 执行该命令后,遇到提示信息,一直按回车就可以

 为了让huaweiyun1节点能够无密码SSH登录本机,需要在huaweiyun1节点上执行如下命令:

cat ./id_rsa.pub >> ./authorized_keys

 完成后可以执行命令“ssh huaweiyun1”来验证一下,可能会遇到提示信息,只要输入yes即可,测试成功后,请执行“exit”命令返回原来的终端。
接下来,在huaweiyun1节点将上公匙传输到huaweiyun2、huaweiyun3节点:

scp ~/.ssh/id_rsa.pub hadoop@huaweiyun2:/home/hadoop/
scp ~/.ssh/id_rsa.pub hadoop@huaweiyun3:/home/hadoop/

 接着分别在huaweiyun2、huaweiyun3节点上,将SSH公匙加入授权:

mkdir ~/.ssh
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

 用完以后就可以删掉

rm ~/id_rsa.pub

这样,在huaweiyun1节点上就可以无密码SSH登录到各个Slave节点了,可在huaweiyun1节点上执行如下命令进行检验:

ssh huaweiyun2
ssh huaweiyun3

 7. 配置集群/分布式环境(节点)

在配置集群/分布式模式时,需要修改“/usr/local/hadoop/etc/hadoop”目录下的配置文件,这里仅设置正常启动所必须的设置项,包括workers(之前版本名称是slaves) 、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml共5个文件,更多设置项可查看官方说明。

修改方法同上,可以vim,也可以使用FinalShell编辑修改保存。

7.1修改文件workers(节点)

配置时,就采用了这种默认的配置,使得节点既作为名称节点也作为数据节点。在进行分布式配置时,可以保留localhost,让huaweiyun1节点同时充当名称节点和数据节点,或者也可以删掉localhost这行,让huaweiyun1节点仅作为名称节点使用。
本教程让huaweiyun1节点仅作为名称节点使用,因此将workers文件中原来的localhost删除,只添加如下内容:

huaweiyun2
huaweiyun3

 7.2修改文件core-site.xml(节点)

请把core-site.xml文件修改为如下内容:

<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://huaweiyun1:9000</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/usr/local/hadoop/tmp</value>
                <description>Abase for other temporary directories.</description>
        </property>
</configuration>

7.3修改文件hdfs-site.xml (节点)

对于Hadoop的分布式文件系统HDFS而言,一般都是采用冗余存储,冗余因子通常为3,也就是说,一份数据保存三份副本。但是,本教程有两个Slave节点作为数据节点,即集群中有两个数据节点,数据能保存两份,所以 ,dfs.replication的值可以设置为 2。hdfs-site.xml具体内容如下:

<configuration>
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>huaweiyun1:50090</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>2</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/usr/local/hadoop/tmp/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/usr/local/hadoop/tmp/dfs/data</value>
        </property>
</configuration>

 7.4修改文件mapred-site.xml(节点)

如果“/usr/local/hadoop/etc/hadoop”目录下有一个mapred-site.xml.template,需要修改文件名称,把它重命名为mapred-site.xml,然后,把mapred-site.xml文件配置成如下内容:

<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>huaweiyun1:10020</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>huaweiyun1:19888</value>
        </property>
        <property>
                <name>yarn.app.mapreduce.am.env</name>
                <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
        </property>
        <property>
                <name>mapreduce.map.env</name>
                <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
        </property>
        <property>
                <name>mapreduce.reduce.env</name>
                <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
        </property> 
</configuration>

 7.5修改文件 yarn-site.xml(节点)

把yarn-site.xml文件配置成如下内容:

<configuration>
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>huaweiyun1</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>

上述5个文件全部配置完成以后,需要把huaweiyun1节点上的“/usr/local/hadoop”文件夹复制到各个节点上。如果之前已经运行过伪分布式模式,建议在切换到集群模式之前首先删除之前在伪分布式模式下生成的临时文件。具体来说,需要首先在huaweiyun1节点上执行如下命令: 

cd /usr/local

删除 Hadoop 临时文件

sudo rm -r ./hadoop/tmp 

删除日志文件

sudo rm -r ./hadoop/logs/*

先压缩再复制

tar -zcf ~/hadoop.master.tar.gz ./hadoop
cd ~
scp ./hadoop.master.tar.gz huaweiyun2:/home/hadoop
scp ./hadoop.master.tar.gz huaweiyun3:/home/hadoop

 然后分别huaweiyun2、huaweiyun3节点上执行如下命令:

删掉旧的(如果存在)

sudo rm -r /usr/local/hadoop 
sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local
sudo chown -R hadoop /usr/local/hadoop

 8.启动hadoop

首次启动Hadoop集群时,需要先在huaweiyun1节点执行名称节点的格式化(只需要执行这一次,后面再启动Hadoop时,不要再次格式化名称节点),命令如下:

hdfs namenode -format

 现在就可以启动Hadoop了,启动需要在Master节点上进行,执行如下命令:

start-all.sh
mr-jobhistory-daemon.sh start historyserver

 通过命令jps可以查看各个节点所启动的进程。如果已经正确启动,则在huaweiyun1节点上可以看到NameNode、ResourceManager、SecondrryNameNode和JobHistoryServer进程,如下图所示。

在huaweiyun2、huaweiyun3节点可以看到DataNode和NodeManager进程,如下图所示。

缺少任一进程都表示出错。另外还需要在Master节点上通过命令“hdfs dfsadmin -report”查看数据节点是否正常启动

hdfs dfsadmin -report

如果屏幕信息中的“Live datanodes”不为 0 ,则说明集群启动成功。由于本教程只有2个Slave节点充当数据节点,因此,数据节点启动成功以后,会显示如下图所示信息。

也可以在浏览器中输入地址“http://主节点ip:9870/”,通过 Web 页面看到查看名称节点和数据节点的状态。如果不成功,可以通过启动日志排查原因。(服务器需要开放9870端口!)

这样子hadoop集群就算是启动成功了。

最后,关闭Hadoop集群,需要在huaweiyun1节点执行如下命令:

stop-all.sh
mr-jobhistory-daemon.sh stop historyserver

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值