docker搭建hadoop和hive集群

一、安装docker并生成相关的镜像

(1)安装docker

安装docker教程

https://www.runoob.com/docker/centos-docker-install.html

只要在终端输入:

sudo docker run hello-world

后出现如下图的内容就证明安装docker成功了

5b7666202ee9923bffa75bad03d15b49.png

(2)拉取CentOS镜像(Ubuntu镜像也行)

在终端输入:

sudo docker pull centos

在终端输入:sudo docker images,可以看到刚刚拉取的两个镜像

b5484b30aacffac585aa229c76c0bd98.png

 

每次执行docker语句都要在前面加sudo,比较麻烦,直接将hadoop用户加入docker用户组,就不用再输入sudo了。

sudo gpasswd -a $USER docker     #将当前用户加入到docker用户组中
newgrp docker     #重新加载docker用户组

一般安装时会自动创建docker用户组,如果docker用户组不存在的话,在终端输入:

sudo groupadd docker     #创建docker用户组

注意,此时只有执行上述两条命令行的终端可以不用输入sudo,其他终端仍要输入,得重启虚拟机后所有终端才不用输入sudo。

(3)通过build Dockfile生成带ssh功能的centos镜像

先创建Dockfile文件,在终端输入:

vi Dockerfile

在Dockfile文件中添加以下内容:

FROM centos
MAINTAINER hadoop
 
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 install -y openssh-server sudo
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
RUN yum install -y openssh-clients
 
RUN echo "root:a123456" | chpasswd
RUN echo "root   ALL=(ALL)       ALL" >> /etc/sudoers
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
 
RUN mkdir /var/run/sshd
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]

Dockfile文件的内容解释:基于centos镜像,生成带有spenssh-server、openssh-clients的镜像,用户为root,密码为a123456,镜像维护者(作者)为hadoop。为了防止出现Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist

错误,我更改了yum下载依赖的镜像baseurl。注意:如果拉取的镜像是Ubuntu的话,得修改下载spenssh-server、openssh-clients的命令行。

你可能需要修改的地方:

1、MAINTAINER hadoop

MAINTAINER+空格+作者的信息,用于指定镜像作者的信息,我的用户名是hadoop,改成你自己的

2、root:a123456

设置镜像的密码,改成你自己的

 

建好Dockerfile文件后,生成镜像,在终端输入:

docker build -t="centos7-ssh" .

查看生成的centos7-ssh镜像,在终端输入:

docker images
3c58b57dc0f1e0b8ed42b9f76f9d666e.png

 

(4)将下载的文件上传虚拟机

没有Xftp和Xshell的同学可以用VMwareTools替代,只要把压缩包添加到虚拟机主机上即可。安装VMwareTools后,复制本地主机的文件粘贴到虚拟机主机指定目录下。

1、用Xshell和Xftp连接虚拟机主机

Xshell(测试是否能正常连接,其实只需要用Xftp传输文件):

用户名填hadoop(换成你自己的),root可能会登不上,如果ssh运行状态没问题,还连接不上的话,可能是防火墙没关。

Xftp:

将压缩包上传到/home/hadoop(有Dockerfile的目录),如果上传失败,可能是目录没有传输文件的权限,在终端输入:

chmod 777 /home/hadoop/

2、解压文件(把目录和文件名改成你自己的)

在终端输入:

tar -zxvf /home/hadoop/hadoop-3.1.3.tar.gz -C /home/hadoop/ico
tar -zxvf /home/hadoop/jdk-8u212-linux-x64.tar.gz -C /home/hadoop/ico

(5)生成带有ssh、hadoop和jdk环境的CentOS镜像

移除原有的Dockerfile文件,在终端输入:

mv Dockerfile Dockerfile.bak

再重新创建一个Dockerfile文件,在终端输入:

vi Dockerfile

或者直接在Xftp上用记事本编辑原来的Dockerfile文件,更加方便(推荐)

将下面内容填入Dockerfile文件(记得保存)

FROM centos7-ssh
 
COPY jdk1.8.0_212 /usr/local/jdk
ENV JAVA_HOME /usr/local/jdk
ENV PATH $JAVA_HOME/bin:$PATH
 
COPY hadoop-3.1.3 /usr/local/hadoop
ENV HADOOP_HOME /usr/local/hadoop
ENV PATH $HADOOP_HOME/bin:$PATH

构建Dockerfile,在终端输入:

docker build -t="hadoop" .
aba08a9f13c117e9e86986aff4ed7543.png
</
### 使用 Docker 构建 Hadoop 集群并与 Hive 集成 #### 准备工作 为了成功创建一个基于 DockerHadoop Hive 环境,首先需要确保已经安装了 Docker 并能够正常运行容器。 #### 创建自定义 Dockerfile 文件用于构建镜像 编写 `Dockerfile` 来指定所需的软件包以及环境变量设置。对于此场景来说,应该包括下载并解压 Apache Hadoop 发行版、配置核心站点 XMLs (core-site.xml, hdfs-site.xml),并且还需要安装 MySQL 作为 Metastore 数据库来支持 Hive[^1]。 ```dockerfile FROM ubuntu:latest # Install Java and other dependencies RUN apt-get update && \ apt-get install -y openjdk-8-jdk wget vim python3-pip mysql-server && \ rm -rf /var/lib/apt/lists/* ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/ ENV PATH=$PATH:$JAVA_HOME/bin WORKDIR /opt/ # Download & extract Hadoop distribution RUN wget https://archive.apache.org/dist/hadoop/core/hadoop-2.7.6/hadoop-2.7.6.tar.gz && \ tar xvzf hadoop-2.7.6.tar.gz && \ mv hadoop-2.7.6/* ./hadoop && \ rm -r hadoop-2.7.6* ENV HADOOP_HOME=/opt/hadoop ENV PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin COPY core-site.xml $HADOOP_HOME/etc/hadoop/ COPY hdfs-site.xml $HADOOP_HOME/etc/hadoop/ EXPOSE 9870 8088 CMD ["bash"] ``` 请注意,在实际操作过程中可能需要调整上述脚本中的路径版本号以匹配具体需求。 #### 启动单节点伪分布式模式下的 Hadoop 实例 通过执行如下命令启动一个新的容器实例: ```shell docker build -t my-hadoop-cluster . docker run -it --name=hadoop-master -p 9870:9870 -p 8088:8088 my-hadoop-cluster bash ``` 进入新打开的 Bash 终端之后初始化 NameNode 并格式化文件系统: ```shell $HADOOP_HOME/bin/hdfs namenode -format start-dfs.sh start-yarn.sh jps # Check processes running on master node. ``` 此时可以访问 http://localhost:9870 或者 http://localhost:8088 浏览器页面查看集群状态信息。 #### 安装 Hive 及其依赖项 在同一个终端窗口内继续操作,现在要准备安装 Hive。由于之前已经在同一台机器上设置了 MySQL Server,所以可以直接利用它来做为外部存储引擎。 ```shell apt-get update && apt-get install -y maven git cd ~ git clone https://github.com/apache/hive.git mvn clean package -Pdist -DskipTests=true -Dmaven.javadoc.skip=true tar zxf apache-hive-*-bin.tar.gz export HIVE_HOME=~/apache-hive-*bin echo 'export HIVE_HOME=~/apache-hive-*bin' >> ~/.bashrc source ~/.bashrc ln -sf ${HIVE_HOME}/bin/hive /usr/local/bin/hive ${HIVE_HOME}/scripts/init/mysql/mysqldbsetup.sh --create=all --verbose=false mysql -u root -e "GRANT ALL PRIVILEGES ON *.* TO 'hiveuser'@'%' IDENTIFIED BY 'password'; FLUSH PRIVILEGES;" sed -i '/<configuration>/a \\\t<property>\\\n\\\t\t<name>javax.jdo.option.ConnectionURL</name>\\\n\\\t\t<value>jdbc:mysql:\/\/host.docker.internal\/metastore?useSSL=false&serverTimezone=UTC</value>\\\n\\\t<\/property>' ~/apache-hive*/conf/hive-site.xml sed -i '/<configuration>/a \\\t<property>\\\n\\\t\t<name>javax.jdo.option.ConnectionDriverName</name>\\\n\\\t\t<value>com.mysql.cj.jdbc.Driver</value>\\\n\\\t<\/property>' ~/apache-hive*/conf/hive-site.xml sed -i '/<configuration>/a \\\t<property>\\\n\\\t\t<name>javax.jdo.option.ConnectionUserName</name>\\\n\\\t\t<value>hiveuser</value>\\\n\\\t<\/property>' ~/apache-hive*/conf/hive-site.xml sed -i '/<configuration>/a \\\t<property>\\\n\\\t\t<name>javax.jdo.option.ConnectionPassword</name>\\\n\\\t\t<value>password</value>\\\n\\\t<\/property>' ~/apache-hive*/conf/hive-site.xml ``` 完成以上步骤后就可以正常使用 Hive CLI 工具连接至刚刚建立起来的服务端点了[^2][^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_Richard_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值