三、Hadoop集群部署
1.准备三台服务器
主机名 | IP地址 | 节点类型 |
---|---|---|
hadoop101 | 192.168.10.101 | master |
hadoop102 | 192.168.10.102 | master |
hadoop103 | 192.168.10.103 | master |
2.节点规划
hadoop101 | hadoop102 | hadoop103 | |
---|---|---|---|
HDFS | NameNode DataNode | DataNode | SecondaryNameNode DataNode |
YARN | NodeManager | ResourceManager NodeManager | NodeManager |
前面单机部署已经在hadoop101配置了Java和Hadoop环境,接下来将其对应文件拷贝到hadoop102、hadoop103即可
先进入/opt/module/
cd /opt/module/
再用scp将hadoop101中的jdk、hadoop拷贝到hadoop102、hadoop103
scp -r jdk1.8.0_333/ root@hadoop102:/opt/module/jdk1.8.0_333
scp -r jdk1.8.0_333/ root@hadoop103:/opt/module/jdk1.8.0_333
scp -r hadoop-3.1.3/ root@hadoop102:/opt/module/hadoop-3.1.3
scp -r hadoop-3.1.3/ root@hadoop103:/opt/module/hadoop-3.1.3
第一次访问会问你是否连接,输入yes回车,再输入密码即可
rsync拷贝方式
rsync -av hadoop-3.1.3/ root@hadoop102:/opt/module/hadoop-3.1.3/
第一次拷贝用scp,后续用rsync好一点,为了方便拷贝,可以写一个xsync分发脚本
cd 到root目录下,创建一个bin
cd ~
mkdir bin
再在bin下创建分发文件xsync
vim bin/xsync
在里面写入如下内容,这里已经把我的三个集群hostname加进去了,后续就不用再指定了
#!/bin/bash
# 1.判断参数个数
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
# 2.遍历集群所有机器并
for host in hadoop101 hadoop102 hadoop103
do
echo ================ $host ================
# 3.遍历所有目录,挨个发送
for file in $@
do
# 4.判断文件是否存在
if [ -e $file ]
then
# 5.获取父目录
pdir=$(cd -P $(dirname $file); pwd)
# 6.获取当前文件的名称
fname=$(basename $file)
ssh $host "mkdir -p $pdir"
rsync -av $pdir/$fname $host:$pdir
else
echo $file does not exists!
fi
done
done
保持好后修改权限
chmod 777 bin/xsync
输入xsync bin/同步bin目录和环境配置文件my
xsync bin/
注意:因为我这已经配置了ssh免密登录,所有不需要输入密码
由于上面每次需要输入密码,所有这里可以配置ssh免密登录
因为我的hadoop101已经配好了,所以下面用100来代替展示,大家继续用hadoop101便可
先进入当前用户下的.ssh目录,然后创建密钥
cd ~ # 进入当前用户目录
cd .ssh # 进入.ssh目录
ssh-keygen -t rsa
输入ssh-keygen -t rsa后连按三次回车,如下
输入ls查看会发现有多出两个文件
ssh-copy-id hadoop101 # 最好对自己也设置一下
ssh-copy-id hadoop102
ssh-copy-id hadoop103
上面是hadoop100对hadoop101、hadoop102、hadoop103都进行了免密登录,如果需要hadoop102对其他进行免密登录,需要在hadoop102下重复上面操作即可。
进入hadoop101,查看授权免密登录账户
cd /root/.ssh
ll # 查看文件
cat authorized_keys # 查看认证信息
可以看到hadoop101已经对hadoop100、hadoop101、hadoop102、hadoop103都授权了免密登录。
依照第二点节点规划对这三台服务器进行配置
hadoop101 | hadoop102 | hadoop103 | |
---|---|---|---|
HDFS | NameNode DataNode | DataNode | SecondaryNameNode DataNode |
YARN | NodeManager | ResourceManager NodeManager | NodeManager |
接下来主要是配置四个核心文件core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml
进入/opt/module/hadoop-3.1.3/etc/hadoop/,依次修改这四个文件
cd /opt/module/hadoop-3.1.3/etc/hadoop/
vim core-site.xml
core-site.xml文件内容如下
fs.defaultFS
hdfs://hadoop101:8020
hadoop.tmp.dir
/opt/module/hadoop-3.1.3/data
hadoop.http.staticuser.user
atguigu
vim hdfs-site.xml
hdfs-site.xml内容如下
dfs.namenode.http-address
hadoop101:9870
dfs.namenode.secondary.http-address
hadoop103:9868
vim yarn-site.xml
yarn-site.xml内容如下
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.resourcemanager.hostname
hadoop102
yarn.nodemanager.env-whitelist
JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME
vim mapred-site.xml
mapred-site.xml文件内容如下
mapreduce.framework.name
yarn
配置worker
vim workers
将里面的内容修改如下
hadoop101
hadoop102
hadoop103
接下来运行xsync命令将/opt/module/hadoop-3.1.3/etc/hadoop下修改过的文件复制到其他服务器
xsync ../hadoop/
到这集群的配置就结束了
查看hadoop的相关启动命令
ll /opt/module/hadoop-3.1.3/sbin/
如果集群是第一次启动,需要先初始化
cd /opt/module/hadoop-3.1.3/
hdfs namenode -format
初始化完成后会出现data文件夹,可以用tree查看一下文件夹结构
tree data/
虽然说我也是跟着教程一步一步做的,但是这里还是有点问题
sbin/start-dfs.sh # 启动hdfs
可以看到,我输入启动命令后会出现如上报错,应该是配置环境的原因
解决方法
vim /etc/profile.d/my_env.sh
添加如下信息
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
保存好后执行source /etc/profile 重新夹在环境配置
再次启动便可以成功了
sbin/start-dfs.sh
输入jps回车可以看到启动的节点(和前面的节点规划一样)
jps
启动hdfs后就可以访问hdfs的web页面了,在浏览器中输入访问链接:http://hadoop101:9870/
因为ResourceManager在hadoop102上,所以这里需要到hadoop102上去启动
这里还是报环境变量错误,所以需要应该把hadoop101上修改的my_env.sh拷贝到hadoop102和hadoop103上,最后记得在hadoop102和hadoop103上source一下
xsync /etc/profile.d/my_env.sh
source /etc/profile.d/my_env.sh # 在hadoop102、hadoop103上执行
再次输入启动yarn命令
如果有这个警告说明前面设置免密登录时没有对自己进行设置,最好三台主机相互之间都设置一下
cd ~/.ssh
ssh-copy-id hadoop102
关闭yarn重新启动
/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh
/opt/module/hadoop-3.1.3/sbin/start-yarn.sh
接下来可以访问yarn的web端,在浏览器中输入访问链接:http://hadoop102:8088/
回到hadoop101主机,cd到hadoop-3.1.3下
cd /opt/module/hadoop-3.1.3
创建input目录
hadoop fs -mkdir /input
上传文件到input目录下
hadoop fs -put wcinput/word.txt /input
tree data/
cat data/dfs/data/current/BP-760216983-192.168.10.101-1722402767471/current/finalized/subdir0/subdir0/blk_1073741825
cd ..
hadoop fs -get /input/word.txt
cat word.txt
cd hadoop-3.1.3/
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output
mapreduce下还有其他jar包程序
ll share/hadoop/mapreduce/
到这里就差不多结束了,如果想要学习更过内容,可以查看hadoop官方文档
Hadoop集群部署需要准备一台主节点和多台从节点,首先安装hadoop软件包并进行配置,主节点上配置hdfs文件系统和yarn资源管理器,从节点上配置yarn节点管理器和hdfs数据节点。配置完成后,启动hadoop集群,可以通过web界面查看集群状态。部署过程中需要注意各个节点间的通信和权限设置,确保集群能够正常工作。最后,可以测试集群的功能,例如通过hadoop命令行工具执行任务,验证集群的性能和稳定性。完成部署后,可以根据需要进一步调优和扩展集群。
————————————————
本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!
《数据资产管理白皮书》下载地址:https://www.dtstack.com/resources/1073/?src=bbs
《行业指标体系白皮书》下载地址:https://www.dtstack.com/resources/1057/?src=bbs
《数据治理行业实践白皮书》下载地址:https://www.dtstack.com/resources/1001/?src=bbs
《数栈V6.0产品白皮书》下载地址:https://www.dtstack.com/resources/1004/?src=bbs
想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=bbs
同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:https://github.com/DTStack