2步安装1个hive docker运行环境[centos7]
1 构建基础容器
基于centos环境docker环境快速搭建,执行步骤
docker build -t cenosbase7 .
执行此步骤就可以构建1个基础的centos基础运行环境
相关的文件如下具体内容如下,其中有详细注释
Dockerfile
#Build image 包含了JDK mariadb sshd
# docker build -t cenosbase7 .
#Run
#-v /sys/fs/cgroup:/sys/fs/cgroup:ro 必须加
# https://hub.docker.com/_/centos/ systemd enabled
# 带提示的启动
# docker run -ti -v /sys/fs/cgroup:/sys/fs/cgroup:ro --privileged=true --name csx cenosbase7
# 守护方式启动
# docker run -tid -v /sys/fs/cgroup:/sys/fs/cgroup:ro --privileged=true --name csx cenosbase7
#1503 not have systemd
#cat /etc/redhat_rlease 7.3
FROM centos:7
MAINTAINER cenosbase
USER root
#https://hub.docker.com/_/centos/
#systemd
# 7.1.1503, RUN yum clean all && yum swap fakesystemd systemd systemd没有安装
ENV container docker
RUN [ -d /lib/systemd/system/sysinit.target.wants ] && (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/*;
RUN yum install -y net-tools iproute lsof && \
yum install -y vim-enhanced && \
yum install -y sudo passwd && \
yum install -y iptables && \
yum install -y openssh.x86_64 openssh-server.x86_64 openssh-clients.x86_64 && \
yum install -y java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel.x86_64 && \
yum install -y mariadb-server.x86_64 mariadb.x86_64 && \
yum install -y mysql-connector-java.noarch
#sshd and root
RUN ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N '' && \
ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N '' && \
ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N '' && \
sed -i "s/#UsePrivilegeSeparation.*/UsePrivilegeSeparation no/g" /etc/ssh/sshd_config && \
sed -i "s/UsePAM.*/UsePAM no/g" /etc/ssh/sshd_config && \
sed -i "s/#Port.*/Port 23/g" /etc/ssh/sshd_config && \
echo "root:root" | chpasswd && systemctl enable mariadb.service && systemctl enable sshd.service
RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" > /etc/default/local
#jdk
RUN ln -s /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64 /usr/lib/jvm/jdk8
ENV JAVA_HOME /usr/lib/jvm/jdk8
ENV CLASSPATH .:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin
RUN rm /usr/bin/java && ln -s $JAVA_HOME/bin/java /usr/bin/java
#supervisor
RUN rpm -Uvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-10.noarch.rpm
RUN yum install -y supervisor
RUN mkdir -p /etc/supervisor/
COPY supervisord.conf /etc/supervisor/
#should use systemd
VOLUME [ "/sys/fs/cgroup" ]
#CMD /usr/sbin/init
COPY run.sh /
RUN chown root:root /run.sh && \
chmod 700 /run.sh && yum clean all
#CMD supervisord -c /etc/supervisor/supervisord.conf
CMD /run.sh
EXPOSE 23
supervisord.conf
[unix_http_server]
file=/var/run/supervisor/supervisor.sock ; (the path to the socket file)
[supervisord]
logfile=/var/run/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=10 ; (num of main logfile rotation backups;default 10)
loglevel=info ; (log level;default info; others: debug,warn,trace)
pidfile=/var/run/supervisor/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
nodaemon=true ; (start in foreground if true;default false)
minfds=1024 ; (min. avail startup file descriptors;default 1024)
minprocs=200 ; (min. avail process descriptors;default 200)
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix:///var/run/supervisor/supervisor.sock ; use a unix:// URL for a unix socket
[program:sshd]
command=/usr/sbin/sshd –D
run.sh
#!/bin/bash
echo "supervisord start..."
supervisord -c /etc/supervisor/supervisord.conf &
echo "init start..."
exec /usr/sbin/init
2 构建hive
基于上一个的镜像,可以构建hive的镜像
docker build -t centoshive .
Dockerfile
#docker build -t centoshive .
#参考了 https://github.com/sequenceiq/hadoop-docker
FROM cenosbase7
MAINTAINER centoshive
USER root
#.tar.gz会自动解压
#http://archive.apache.org/dist/hive/hive-1.1.0/apache-hive-1.1.0-bin.tar.gz
#http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.10.1.tar.gz
ADD pkg/apache-hive-1.1.0-bin.tar.gz /usr/local/
ADD pkg/hadoop-2.6.0-cdh5.10.1.tar.gz /usr/local/
#RUN ls -l /usr/local/
RUN cd /usr/local && ln -s ./hadoop-2.6.0-cdh5.10.1 hadoop && ln -s ./apache-hive-1.1.0-bin hive
ENV HADOOP_PREFIX=/usr/local/hadoop HADOOP_COMMON_HOME=/usr/local/hadoop HADOOP_HDFS_HOME=/usr/local/hadoop
ENV HADOOP_MAPRED_HOME /usr/local/hadoop
ENV HADOOP_YARN_HOME /usr/local/hadoop
ENV HADOOP_CONF_DIR /usr/local/hadoop/etc/hadoop
ENV YARN_CONF_DIR $HADOOP_PREFIX/etc/hadoop
RUN sed -i '/^export JAVA_HOME/ s:.*:export JAVA_HOME=/usr/lib/jvm/jdk8\nexport HADOOP_PREFIX=/usr/local/hadoop\nexport HADOOP_HOME=/usr/local/hadoop\n:' $HADOOP_PREFIX/etc/hadoop/hadoop-env.sh && \
sed -i '/^export HADOOP_CONF_DIR/ s:.*:export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop/:' $HADOOP_PREFIX/etc/hadoop/hadoop-env.sh
#RUN . $HADOOP_PREFIX/etc/hadoop/hadoop-env.sh
RUN mkdir $HADOOP_PREFIX/input && \
cp $HADOOP_PREFIX/etc/hadoop/*.xml $HADOOP_PREFIX/input
# pseudo distributed
ADD hadoop-cfg/core-site.xml.template $HADOOP_PREFIX/etc/hadoop/core-site.xml.template
RUN sed s/HOSTNAME/localhost/ /usr/local/hadoop/etc/hadoop/core-site.xml.template > /usr/local/hadoop/etc/hadoop/core-site.xml
ADD hadoop-cfg/hdfs-site.xml $HADOOP_PREFIX/etc/hadoop/hdfs-site.xml
ADD hadoop-cfg/mapred-site.xml $HADOOP_PREFIX/etc/hadoop/mapred-site.xml
ADD hadoop-cfg/yarn-site.xml $HADOOP_PREFIX/etc/hadoop/yarn-site.xml
RUN $HADOOP_PREFIX/bin/hdfs namenode -format
# fixing the libhadoop.so like a boss
ADD pkg/hadoop-native-64-2.7.1.tar.gz /usr/local/hadoop/lib/native
# workingaround docker.io build error
RUN chmod +x /usr/local/hadoop/etc/hadoop/*-env.sh
#ssh
ADD ssh_config /root/.ssh/config
RUN chmod 600 /root/.ssh/config
RUN chown root:root /root/.ssh/config
#ssh localhost不用登录
# passwordless ssh
RUN ssh-keygen -q -N "" -t dsa -f /etc/ssh/ssh_host_dsa_key
#RUN ssh-keygen -q -N "" -t rsa -f /etc/ssh/ssh_host_rsa_key
RUN ssh-keygen -q -N "" -t rsa -f /root/.ssh/id_rsa
RUN cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
#hive
ENV HIVE_HOME /usr/local/hive
COPY hive/hive-site.xml /usr/local/hive/conf/.
COPY pkg/mysql-connector-java-5.1.38.jar /usr/local/hive/lib/.
ENV PATH $PATH:/usr/local/hive/bin
#daemon service
RUN mkdir -p /opt/daemon/ && rm -f /run.sh && rm -rf /etc/supervisor/
ADD svc/*.sh /opt/daemon/
COPY svc/*.ini /etc/supervisord.d/
RUN mkdir -p /opt/log && chown root:root /opt/daemon/*.sh && \
chmod 700 /opt/daemon/*.sh
#
COPY svc/locale.conf /etc/
#RUN yum install -y kde-l10n-Chinese
#
CMD /opt/daemon/run.sh
# Hdfs ports
EXPOSE 50010 50020 50070 50075 50090 8020 9000
# Mapred ports
EXPOSE 10020 19888
#Yarn ports
EXPOSE 8030 8031 8032 8033 8040 8042 8088
#hive ports
EXPOSE 10000
其他依赖文件
https://gitee.com/wushifeng/hivedocker/attach_files/download?i=114939&u=http%3A%2F%2Ffiles.git.oschina.net%2Fgroup1%2FM00%2F02%2FC6%2FPaAvDFpfFtOASF8RABMYaUNwYdI5212.gz%3Ftoken%3D08896e8c3e9a49eed5c33d921bd52836%26ts%3D1516181203%26attname%3Dhive-docker.tar.gz
2步安装1个hive docker运行环境[centos7]的更多相关文章
- Mac OS 您需要安装旧 Java SE 6 运行环境才能打开“XXX” 问题
问题描述: 今天在Mac OS上安装一个app的时候提示 “您需要安装旧 Java SE 6 运行环境才能打开 XXX” ,在网上搜索了一下,有说要改app的info.plist文件的,将其中的JVM ...
- 【Java SE】如何安装JDK以及配置Java运行环境
摘要:不管是作为苦逼的Java码农,还是高端大气的Java系统架构师,如果不会安装JDK以及配置Java运行环境,那就巧妇难为无米之炊,不能进行Java后续的代码编写.当然如果你是Myeclipse编 ...
- 安装JDK以及配置Java运行环境
安装JDK以及配置Java运行环境 1.JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2 ...
- docker运行环境安装-centos(一)
在这里我们使用的是docker的社区版Docker CE,针对的是未安装docker的新的主机,如果安装过docker的早期版本,先卸载它们及关联的依赖资源,安装的版本为docker 18.03. 1 ...
- ubuntu 中安装jenkins,基于docker运行jenkins
本文是在ubuntu环境下安装jenkins,jenkins运行在docker容器中,至于docker如何安装,本文不再描述,大家可以上网查询下,如何安装docker,下面先放上一个使用jenkin ...
- Docker学习笔记之搭建Docker运行环境
0x00 概述 既然 Docker 是一款实用软件,我们就不得不先从它的安装说起,只有让 Docker 运行在我们的计算机上,才能更方便我们对 Docker 相关知识和使用方式的学习.得益于与商业性的 ...
- [IOT] - 在树莓派的 Raspbian 系统中安装 .Net Core 3.0 运行环境
之前在 Docker 中配置过 .Net Core 运行环境,地址:[IOT] - Raspberry Pi 4 Model B 系统初始化,Docker CE + .Net Core 开发环境配置 ...
- Docker03-安装Docker运行环境
目录 Ubuntu 18 中安装Docker 查看Docker安装信息 查看Docker版本,命令:docker version 查看Docker运行信息,命令: docker info 检查安装是否 ...
- centos7最小版本安装nginx+tomcat+java+mysql运行环境
最近项目从windows搬到linux,由于项目组成员有限并且有其它紧急的任务需要处理,因而这个任务就落到我的头上了.下面记录下centos最小版本安装nginx+tomcat+mysql+java的 ...
随机推荐
- OAuth2.0介绍
OAuth2.0介绍 OAuth2.0简介 四种许可类型 2.1. 授权码许可(Authorization Code) 2.2. 隐式许可(Implicit) 2.3. 资源拥有者密码凭据许可(Res ...
- 刷完500道BAT面试题,我能去面试大厂了吗?
面试之前先刷几篇面经,或者做几道热门面试题,想必是大家很熟悉的一种复习方式了,就像我们当年经常做五年高考三年模拟一样.但是可不要把面试题和面经当成你的主要复习方式,它只是锦上添花,绝非雪中送炭! 壹面 ...
- [android]__如何在studio中导入,使用开源的UI组件
前言 在编程开发中,我们对第三方的优质开源组件是十分依赖的,在很多时候,我们都会使用到他们.使用第三方开源组件能够给我们的编程开发带来很大的便利.今天以这篇文章记录关于在android项目中引用第三方 ...
- Eclipse For JavaEE安装、配置、测试
Eclipse For JavaEE安装.配置.测试(win7_64bit) 目录 1.概述 2.本文用到的工具 3.安装与配置 4.JavaSE开发测试(确保JDK已正确安装) 5.JavaEE开发 ...
- 各个系统下ping IP+端口的方法
前言 做开发的人员,可能都会遇到网络的一些问题.这时一般都需要测试指定的网络是否能正常访问.通常在windows系统下,在cmd里直接用命令ping指定的IP或者域名就可以快速的知道这个地址是否是可以 ...
- ui2code中的深度学习+传统算法应用
背景 在之前的文章中,我们已经提到过团队在UI自动化这方面的尝试,我们的目标是实现基于 单一图片到代码 的转换,在这个过程不可避免会遇到一个问题,就是为了从单一图片中提取出足够的有意义的结构信息,我们 ...
- python等值和大小比较
等值.大小比较 在python中,只要两个对象的类型相同,且它们是内置类型(字典除外),那么这两个对象就能进行比较.关键词:内置类型.同类型.所以,两个对象如果类型不同,就没法比较,比如数值类型的数值 ...
- Linux某些命令找不到/无法使用
1.zip/unzip: command not found yum list | grep zip/unzip yum install zip yum install unzip 2.rz -y/s ...
- AngularJs_自定义注入对象_笔记1
A-自定义控件示例: 我的自定义控件文件为:angular-seagull2-common.js (function (window, angular) { 'use strict'; $urlPro ...
- 【译】微型ORM:PetaPoco
PetaPoco是一款适用于.Net 和Mono的微小.快速.单文件的微型ORM. PetaPoco有以下特色: 微小,没有依赖项……单个的C#文件可以方便的添加到任何项目中. 工作于严格的没有装饰的 ...