您的位置:首页 > 大数据 > Hadoop

在Deepin(深度)操作系统上使用docker在idea中搭建一个简单的Hadoop集群(二)

2020-07-15 06:14 483 查看

本文直接承接上一份博客具体详情不再过多赘述
第一部分传送门:https://blog.csdn.net/welson650/article/details/105280996

五、idea操作部分

5.用上面的新建指令或者直接右键在hadoop文件夹下新建config文件夹,并导入/编写配置文件(配置文件共9个,1-4见上一篇):
(5)mapred-env.sh:
mapred-env.sh配置文件
(6)mapred-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop-master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop-master:19888</value>
</property>
</configuration>

(7)slaves(工作节点):

hadoop-slave1
hadoop-slave2

(8)yarn-env.sh:
yarn-env.sh配置文件
(9)yarn-site.xml:

<?xml version="1.0"?>

<configuration>

<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop-master</value>
</property>

</configuration>

6.在day2下新建docker-compose.yml配置文件:

version: '3'

services:
hadoop-master:
image: test/hadoop
container_name: hadoop-master
networks:
- test-net
stdin_open: true # -i interactive
tty: true # -t tty
entrypoint: [ "sh", "-c", "service ssh start; bash"]
volumes:
- ./data/master:/data

hadoop-slave1:
image: test/hadoop
container_name: hadoop-slave1
networks:
- test-net
stdin_open: true
tty: true
entrypoint: ["sh" ,"-c","service ssh start; bash"]
volumes:
- ./data/slave1:/data

hadoop-slave2:
image: test/hadoop
container_name: hadoop-slave2
networks:
- test-net
stdin_open: true
tty: true
entrypoint: ["sh" ,"-c","service ssh start; bash"]
volumes:
- ./data/slave2:/data

networks:
test-net:
external: false

7.在day2下新建install.sh,并编写代码,执行安装操作:

#!/bin/bash

echo "===========自动化安装Hadoop==========="

echo "系统要求1.安装了docker 2安装了docker-compose"

read -r -p "准备好了吗? [Y/n] " envConfirm
case $envConfirm in
[yY][eE][sS]|[yY])
echo "Yes 继续执行"
;;
[nN][oO]|[nN])
echo "No 终止执行"
exit 1
;;
*)
echo "Invalid input... 终止执行"
exit 1
;;
esac

if [  -d "$PWD/data/" ];then
sudo rm -rf $PWD/data
fi

mkdir -p $PWD/data/

cd hadoop

docker build -t test/hadoop .

cd -

docker-compose -f docker-compose.yml up -d

echo "集群构建成功"

8.在day2目录下,运行

bash install.sh
指令看到

hadoop-master done
hadoop-slave1 done
hadoop-slave2 done

即证明节点创建成功。
进入http://localhost:9000/#/containers查看节点状态,可以看到三个节点状态均为Running。

9.启动Hadoop的hdfs和yarn服务:
(1)输入

docker exec -it hadoop-master bash
进入该集群的hadoop-master节点,依次执行如下代码,获取三台机器之间的访问权限,如果中途需要输入yes/no输入yes即可,切记每次ssh后一定要exit,不然后续可能报错。

ssh hadoop-master
exit
ssh hadoop-slave1
exit
ssh hadoop-slave2
exit

(2)全部执行无误后,在hadoop-master上运行

hdfs namenode -format
进行格式化(此处无需进行切换直接输入指令,回车即可)。
(3) 成功后,运行
start-dfs.sh
指令,待执行成功后,可以查看***:500070(***为localhost:9000上查到的hadoop-master节点的ip地址),看到如下效果则说明运行正常:

(4)这一步运行成功后,执行
start-yarn.sh
启动yarn服务,一般上一步能够成功这一步就不会报错。
(5)执行
mr-jobhistory-daemon.sh start historyserver
开启JobHistoryServer服务。
(6)待上一步运行完成后,输入jps可以看到namenode,ResourceManager, Jps,SecondaryNameNode,JobHistoryServer(hadoop-master)五个进程,hadoop-slave里面有jps,nodemanager,datanode三个进程,说明执行成功,此时这个简单的hadoop集群就搭建完成了。
注:(1)关闭集群时应先关闭服务,先后执行下面两条指令完成退出操作:

stop-all.sh
exit

(2)第二次启动时,不要执行

bash install.sh
,这样会导致集群被覆盖,节点过期。
应执行
docker-compose -f docker-compose.yml up -d
,然后执行
docker exec -it hadoop-master bash
进入集群,不需要输入格式化指令(仅第一次启动时执行),完成后续操作。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: