美文网首页Docker容器
制作一个用来调试hive的docker镜像

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

作者: 一米的光年 | 来源:发表于2018-09-01 10:00 被阅读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. 启动服务:
      登陆后可以根据需要启动各组件的服务。

    • 环境变量:JAVA_HOME, HADOOP_HOME, HIVE_HOME 已设置
    • mysql:已经默认启动。已建立root与hadoop用户,密码均为 123!@#qweQWE
    • Hadoop:已经配置为yarn模式。namenode已经格式化。直接启动即可。$HADOOP_HOME\sbin\start-all.sh
    • Hive: metastore 使用的数据已经配置为mysql.
      -- 启动metastore服务: hive --service metastore
      -- 使用cli:hive
      -- 启动hiveserver2: hiveserver2
      -- 连接hiveserver2: beeline -u "jdbc:hive2://127.0.0.1:10000"
    1. UI界面:
    • yarn: http://127.0.0.1:8088
    1. 远程调试:
    • 启动cli: hive --debug 此时程序会监听8000端口,等待ide连接
    • intellj: 配置远程模式,端口填写为8000,在cli模块代码中打好断点,点击运行。


      Screen Shot 2018-09-01 at 9.58.42 AM.png

    搭建过程:

    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
    

    相关文章

      网友评论

        本文标题:制作一个用来调试hive的docker镜像

        本文链接:https://www.haomeiwen.com/subject/zkyywftx.html