Hadoop
一、准备工作
1. JDK
准备JDK安装包
2. Hadoop
下载Hadoop,官网提供Source和Binary两种方式,这里采用的是Binary的Hadoop-3.3.3.tar.gz。
3. CentOS
在Docker中拉取CentOS镜像,这里选择的是最新版。![]()
4. DockerFile
准备DockerFile,这里的DockerFile是基于CentOS包括了Java、Hadoop和SSH。
FROM centos
MAINTAINER 自定义用户名 "自定义邮箱"
# 时区设置
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 路径设置
ENV MYPATH /
ENV JAVAPATH /usr/local/java
ENV HADOOPPATH /usr/local/hadoop
WORKDIR $MYPATH
# YUM 设置 避免CentOS停服找不到下载源的问题
RUN cd /etc/yum.repos.d/
RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
RUN sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
RUN yum makecache
RUN yum update -y
# 安装所需命令
RUN yum -y install passwd && yum -y install sudo && yum -y install openssh-clients && yum -y install openssh-server
# Java
ADD jdk-8u261-linux-x64.tar.gz $JAVAPATH
ENV JAVA_HOME=/usr/local/java/jdk1.8.0_261
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH
CMD ["java","-version"]
# SSH
## 指定 root 账号密码
RUN /bin/echo 'root:密码'|chpasswd
## 配置可以远程连接
RUN ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''
RUN ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N ''
RUN /bin/sed -i 's/.*session.*required.*pam_loginuid.so.*/session optional pam_loginuid.so/g' /etc/pam.d/sshd
RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" > /etc/default/local
RUN echo "StrictHostKeyChecking ask" >> /etc/ssh/ssh_config
# 创建 hadoop 账号
RUN groupadd hadoop && useradd -d /home/hadoop -g hadoop -m hadoop
# 指定 hadoop 账号密码
RUN /bin/echo 'hadoop:密码'|chpasswd
# hadoop 账号赋予 sudo 权限
RUN /bin/echo 'hadoop ALL=(ALL) ALL' >> /etc/sudoers
# 设置 root 用户 ssh 免密登录
RUN rm /run/nologin && \
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa && \
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys && \
chmod 0600 ~/.ssh/authorized_keys
# 设置 hadoop 用户 ssh 免密登录
RUN su - hadoop -c "ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa && cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys && chmod 0600 ~/.ssh/authorized_keys"
# Hadoop
# 安装部署 hadoop 服务
ADD hadoop-3.3.3.tar.gz $HADOOPPATH
## 编辑 hadoop 目录下的 etc/hadoop/hadoop-env.sh文件,定义JAVA_HOME
RUN sed -i '/# export JAVA_HOME=/a\export JAVA_HOME=/usr/local/java/jdk1.8.0_261' /usr/local/hadoop/hadoop-3.3.3/etc/hadoop/hadoop-env.sh
## 设置 HADOOP_HOME 并添加环境变量
RUN echo "export HADOOP_HOME=/usr/local/hadoop/hadoop-3.3.3" >> /etc/profile
RUN echo "export PATH=\$HADOOP_HOME/bin:\$PATH" >> /etc/profile
ENV HADOOP_HOME /usr/local/hadoop/hadoop-3.3.3
ENV PATH $HADOOP_HOME/bin:$PATH
## 创建 hadoop.tmp.dir 目录
RUN su -hadoop -c "mkdir /usr/local/hadoop/tmp"
## 上传配置文件并覆盖原有配置文件
### HDFS
# ADD install/hadoop/config/core-site.xml /home/hadoop/hadoop-3.3.3/etc/hadoop
# ADD install/hadoop/config/hdfs-site.xml /home/hadoop/hadoop-3.3.3/etc/hadoop
### YARN
# ADD install/hadoop/config/mapred-site.xml /home/hadoop/hadoop-3.3.3/etc/hadoop
# ADD install/hadoop/config/yarn-site.xml /home/hadoop/hadoop-3.3.3/etc/hadoop
# 暴露端口号 9870 是 HDFS 对外端口号
EXPOSE 22 9870 9000 9864 9866 8088
# 启动镜像,环境变量生效,容器启动会自动运行 ~/.bashrc
RUN echo "source /etc/profile" >> ~/.bashrc
# 格式化 HDFS 文件系统
# RUN su - hadoop -c "hdfs namenode -format"
# CMD su - hadoop -c "/home/hadoop/hadoop-3.3.3/sbin/start-dfs.sh && /home/hadoop/hadoop-3.3.3/sbin/start-yarn.sh" & /usr/sbin/sshd -D
CMD /usr/sbin/sshd -D
5. 创建镜像
将上述步骤中的JDK、Hadoop安装包以及DockerFile上传至服务器,使用 build 命令创建镜像。
Tip 1 由于CentOS停服问题,有可能会在执行yum命令时耗费数分钟时间(笔者耗时6分钟)。
Tip2 不要忘记命令最后的 .
docker build -f Dockerfile-SSH-HADOOP -t jdk-ssh-hadoop:版本号 .
镜像创建完毕后,输入命令查看镜像。
docker images
(二)运行Hadoop
1. 创建容器
使用上述创建的镜像创建容器。
docker run -itd --network 自定义网络名 --ip 自定义IP -p 自定义端口:22 -p 自定义端口:9870 -p 自定义端口:9000 -p 自定义端口:9864 -p 自定义端口:9866 -p 自定义端口:8088 -v 自定义宿主机路径:自定义容器路径 --name 自定义容器名 jdk-ssh-hadoop:版本号
使用命令查看容器运行状态。
docker ps -a
2. 启动Hadoop
进入容器
docker exec -it 容器名
退出容器
exit
创建xinde
等待更新…
4
5
6
7
8
9
9
docker run -itd --network 网络名 --ip 地址 -p 端口:22 -p 端口:9870 -p 端口:9000 -p 端口:9864 -p 端口:9866 -p 端口:8088 -v /usr/local/docker-data/地址:/usr/local/docker-data --name 容器名 镜像名:版本号
参考文献
CentOS停服导致yum下载失败
Hadoop Docker容器化部署
Linux为用户授权
报错:Cannot set priority of datanode process
报错:Cannot set priority of datanode process
报错
core-site.xml 配置
xml配置
vi命令参考
版权声明:本文为weixin_45526462原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。