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

本文直接承接上一份博客具体详情不再过多赘述
第一部分传送门: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进入集群,不需要输入格式化指令(仅第一次启动时执行),完成后续操作。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值