Docker容器

制作一个用来调试hive的docker镜像

2018-09-01  本文已影响4人  一米的光年

为了调试hive,我们使用docker来制作一个镜像。可以在镜像中启动hive的相关服务,在本地ide(intellij)中进行远程调试。
先放出最后制作好的镜像: docker pull limengjiao029/hive:v0.1

使用方法:

  1. 启动镜像:
    docker run --privileged -tid -p 8000:8000 -p 8088:8088 -p 8042:8042 -p 50070:50070 limengjiao029/hive:v0.1

  2. 登陆镜像:
    containerID 为上一步启动镜像后得到的容器id。
    docker exec -ti containerID /bin/bash

  3. 启动服务:
    登陆后可以根据需要启动各组件的服务。

  1. UI界面:
  1. 远程调试:

搭建过程:

  1. 创建dockerfile:
> mkdir hivedocker
> cd hivedocker
> touch Dockerfile

  1. 编辑Dockerfile:
FROM centos:7
ENV container docker
RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == \
systemd-tmpfiles-setup.service ] || rm -f $i; done); \
rm -f /lib/systemd/system/multi-user.target.wants/*;\
rm -f /etc/systemd/system/*.wants/*;\
rm -f /lib/systemd/system/local-fs.target.wants/*; \
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
rm -f /lib/systemd/system/basic.target.wants/*;\
rm -f /lib/systemd/system/anaconda.target.wants/*;
VOLUME [ "/sys/fs/cgroup" ]
RUN yum -y install net-tools
RUN yum -y install wget
RUN yum -y install vim-common
RUN yum -y install openssh*
RUN yum -y install initscripts
RUN yum -y install which
CMD ["/usr/sbin/init"]

  1. 生成镜像:
> docker build -t local/base

--

  1. 环境配置:
    按照上文的方法启动并登入 local/base 镜像。假设得到的container id 是 baseContainerID,后续会用到这个id。

-- 安装jdk

> wget http://~/jdk-8u181-linux-x64.tar.gz
> tar -zxf jdk-8u181-linux-x64.tar.gz 
> export JAVA_HOME=
> export PATH=$JAVA_HOME/bin:$PATH

-- 安装mysql:

wget http://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm
rpm -Uvh mysql57-community-release-el7-10.noarch.rpm
yum install  -y  mysql-community-server

-- 配置mysql:
mysql安装后重设密码

> vi /etc/my.cnf # 最后一行增加 skip-grant-tables
> service mysqld start
> mysql
mysql > use mysql;
mysql > update user set authentication_string = password("root") where user='root';
mysql > exit;
> vi /etc/my.cnf # 去掉最后一行
> service mysqld stop
> service mysqld start
> mysql -uroot -proot
mysql > alter user 'root'@'localhost' identified by '123!@#qweQWE';
mysql > flush privileges;
mysql > exit;

创建hadoop账户,并创建hive数据库

mysql > create user 'hadoop'@'localhost' identified by '123!@#qweQWE';
mysql > grant all privileges on *.* to hadoop;
mysql > create database hive;

-- 配置hadoop:
下载hadoop,编辑 hadoop-env.sh, core-site.xml, hdfs-site.xml。 如果使用yarn模式,还需要编辑mapred-site.xml和yarn-site.xml.

hadoop-env.sh

export JAVA_HOME=/***/jdk1.8.0_181

core-site.xml

<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/data/tmp</value>
</property>

hdfs-site.xml

<property>
<name>dfs.replication</name>
<value>1</value>
</property>

mapred-site.xml

<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

yarn-site.xml

<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

环境变量和初始化

> export HADOOP_HOME=
> export PATH=$HADOOP_HOME/bin:$PATH
> hadoop namenode -format

-- 配置hive:
下载hive,编辑hive-env.sh,根据需要编辑hive-site.xml
hive-env.sh

HADOOP_HOME=
HIVE_CONF_DIR=

hive-site.xml

<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hadoop</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123!@#qweQWE</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://127.0.0.1:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>

初始化metastore

> schematool -dbType mysql -initSchema

  1. 提交更改
> docker commit baseContainerID limengjiao/029:v0.1
上一篇下一篇

猜你喜欢

热点阅读