运维文档
Centos7运维命令
Centos7在线搭建docker的elasticsearch环境(单节点)
Centos7使用阿里云yum源
Centos7 Yum相关软件在线安装
Windows运维
工具类运维
禅道系统运维
git使用培训
Docker搭建Hadoop环境
Docker搭建Hadoop环境(新)
Mysql运维
MySQL 索引
Mysql模拟故障恢复案例过程
常用Sql
Docker维护命令
Git常用操作命令
搭建ZSK服务
SVN常用操作命令及维护
Ubuntu相关运维
gitlab安装升级操作
openEuler运维命令
常用统计SQL-治未病
服务人数-活动档案统计
Oracle数据库管理
Windows安装VC2015\VC2017
Idea离线开发的Maven设置
慢病治未病部署步骤
Centos7升级openssh+openssl
OpenEuler22.03源码编译安装Nginx
Centos7 ISO文件做本地yum源
本文档使用 MrDoc 发布
-
+
首页
Docker搭建Hadoop环境(新)
# Docker搭建Hadoop环境 Docker搭建hadoop环境,参考其他几篇博文,并将hadoop和hdfs放到宿主机,便于替换。这样每次升级后,或容器出错,只需要重开一个容器即可。 ## 搭建完成后的目录结构 ```mindmap>300 # $root_dir ## conf ### hosts ## hadoop-2.10.1 ## apache-hive-1.2.2-bin ## hdfs ### master ### slave1 ### slave2 ``` ## 安装Centos虚拟机 略。见参考内容1 ## 安装Docker 略。见参考内容1 ## 创建Hadoop镜像 进入服务器,上传以下`dockerfile`文件,或命令行创建文件,并粘贴文件内容。 ```shell FROM centos:centos7.9.2009 MAINTAINER zhangwh "zhangwh@citaiehealth.com" RUN yum update -y RUN yum install -y openssh-server sudo RUN yum install -y openssh-clients RUN yum install -y passwd iproute wget which exec # This is the Java file that I added ADD jdk-8u361-linux-x64.tar.gz /usr/local/ ENV JAVA_HOME=/usr/local/jdk1.8.0_361 ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar ENV PATH=$JAVA_HOME/bin:$PATH # This image already has a secret - free login RUN ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '' RUN cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys RUN sed -i 's/PermitEmptyPasswords yes/PermitEmptyPasswords no /' /etc/ssh/sshd_config RUN sed -i 's/PermitRootLogin without-password/PermitRootLogin yes /' /etc/ssh/sshd_config RUN echo " StrictHostKeyChecking no" >> /etc/ssh/ssh_config RUN echo " UserKnownHostsFile /dev/null" >> /etc/ssh/ssh_config RUN echo "root:hadoop@citai" | chpasswd RUN echo "root ALL=(ALL) ALL" >> /etc/sudoers RUN mkdir /var/run/sshd VOLUME ["/opt/hadoop","/opt/hdfs", "/opt/hive"] ENV HADOOP_HOME=/opt/hadoop ENV PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH ENV HIVE_HOME=/opt/hive ENV PATH=$HIVE_HOME/bin:$PATH ENV HDFS_NAMENODE_USER="root" ENV HDFS_DATANODE_USER="root" ENV HDFS_SECONDARYNAMENODE_USER="root" ENV YARN_RESOURCEMANAGER_USER="root" ENV YARN_NODEMANAGER_USER="root" EXPOSE 22 CMD ["/usr/sbin/sshd", "-D"] ``` ## 下载Hadoop及其组件 略。 ## 启动容器 ### 启动master ```shell docker run -d \ --network hadoop \ -v /root/hadoop/conf/hosts:/etc/hosts \ -v /root/hadoop/hadoop-2.10.1:/opt/hadoop \ -v /root/hadoop/apache-hive-1.2.2-bin:/opt/hive \ -v /root/hadoop/hdfs/master:/opt/hdfs \ -h master \ -p 50070:50070 \ -p 8088:8088 \ -p 9001:9001 \ --restart always \ --name master --privileged \ citai/centos7-hadoop:20230417 \ /usr/sbin/init ``` ### 启动slave 其中,如果需要多启动`slave`,则将其中的`slave1`修改为多个。例如`slave1`、`slave2`、`...`。 ```shell docker run -d \ --network hadoop \ -v /root/hadoop/conf/hosts:/etc/hosts \ -v /root/hadoop/hadoop-2.10.1:/opt/hadoop \ -v /root/hadoop/apache-hive-1.2.2-bin:/opt/hive \ -v /root/hadoop/hdfs/slave1:/opt/hdfs \ -h slave1 \ --restart always \ --name slave1 --privileged \ citai/centos7-hadoop:20230417 \ /usr/sbin/init ``` > 如果启动了多个`slave`,则同步的`hosts`,也要增加多个,不然无法使用名称访问到对应的容器。 hosts文件: ```shell 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.18.0.2 master 172.18.0.3 slave1 172.18.0.4 slave2 ``` ### 初始化master并启动Hadoop 待master和所有slave容器都启动完之后。进入master容器: ```shell docker exec -it master /bin/bash ``` 进入`/opt/hadoop/bin`目录下,执行以下命令,进行hadoop初始化: ```shell hdfs namenode -format ``` 显示以下内容,表示初始化成功。 ```shell 待补充 ``` 再进入/opt/hadoop/sbin目录下,执行 ```shell ./start-all.sh ``` 显示以下内容,表示Hadoop启动成功。 ```shell 待补充 ``` ## 开放Hadoop相关端口,并验证Hadoop启动 默认服务器应开启防火墙,Hadoop容器启动后,需要在防火墙放开`50070`、`9001`、`8088`等web端口,用于监控和查看Hadoop运行情况。 ```shell sudo firewall-cmd --permanent --add-port=8088/tcp sudo firewall-cmd --permanent --add-port=9001/tcp sudo firewall-cmd --permanent --add-port=50070/tcp sudo firewall-cmd --reload ``` 可分别通过宿主机的以上端口访问,确认Hadoop的访问正常。 ## 执行Hadoop任务 待补充 参考内容: [[1]]:[Docker搭建Hadoop环境](/project-2/doc-8/) [[2]]:[使用 Docker 安装 Hadoop 集群](https://blog.csdn.net/m0_67400973/article/details/126553623 ) [[3]]:[[零基础]用docker搭建Hadoop集群](https://blog.csdn.net/weixin_56114243/article/details/127937607)
张文海
2023年4月18日 11:32
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码