docker搭建hive

docker搭建hive

  • 準備hadoopjavajar包
  • 準備Mysql,見之前文章
docker run --name mysql --hostname mysql --net hadoop --ip 172.18.0.5 -p 3306:3306 -v /Users/jackmanwu/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=wujinlei -d mysql
  • 下載Mysql驅動
wget -c https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.23/mysql-connector-java-8.0.23.jar
  • 下載hive
wget -c https://mirror.jframeworks.com/apache/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz
tar -zxvf pache-hive-3.1.2-bin.tar.gz
  • 編寫Dockerfile
FROM centos:latest
MAINTAINER jackmanwu "[email protected]"

ENV JdkPath=/usr/java/jdk
WORKDIR $JdkPath

ADD jdk-8u281-linux-x64.tar.gz $JdkPath

ENV JAVA_HOME=$JdkPath/jdk1.8.0_281
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH

ENV HADOOP_HOME=/usr/java/hadoop-3.1.4
ENV PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

ENV HIVE_HOME=/usr/java/apache-hive-3.1.2-bin
ENV PATH=$HIVE_HOME/bin:$HIVE_HOME/sbin:$PATH

ENV ServiceName=hadoop-3.1.4 \
    WorkPath=/usr/java

WORKDIR /hive

WORKDIR $WorkPath
ADD start.sh $WorkPath
RUN chmod 755 start.sh
ADD hadoop-3.1.4.tar.gz $WorkPath
ADD apache-hive-3.1.2-bin.tar.gz $WorkPath
ADD mysql-connector-java-8.0.23.jar $WorkPath/apache-hive-3.1.2-bin/lib/

RUN rm -rf $WorkPath/apache-hive-3.1.2-bin/lib/guava-19.0.jar
RUN mv $WorkPath/hadoop-3.1.4/share/hadoop/common/lib/guava-27.0-jre.jar $WorkPath/apache-hive-3.1.2-bin/lib/
EXPOSE 10002

CMD ["./start.sh"]
  • 打包鏡像
docker build -t hive .
  • 暫時先啓動容器
docker run --name hive -d hive
  • 將conf文件複製到本地,用於映射容器文件
docker cp hive:/usr/java/apache-hive-3.1.2-bin/conf .
  • 本地conf文件下新建hive-site.xml
<configuration>
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://mysql:3306/hive?createDatabaseIfNotExist=true</value>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.cj.jdbc.Driver</value>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>wujinlei</value>
  </property>
</configuration>
  • start.sh
#!/bin/bash
tail -f /dev/null
  • kill掉啓動的容器
docker stop hive
docker rm hive
  • 重新啓動容器
docker run --name hive --hostname hive --net hadoop --ip 172.18.0.6 -p 127.0.0.1:10002:10002 -v /Users/jackmanwu/docker/hive/conf/:/usr/java/apache-hive-3.1.2-bin/conf/ -d hive /usr/sbin/init
  • 進入容器查看對應的文件是否映射
docker exec -it hive bash
  • 初始化
schematool -dbType mysql -initSchema
  • 啓動
hiveserver2 1>/dev/null 2>&1 &
  • 測試連接
beeline
!connect jdbc:hive2://127.0.0.1:10000
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章