基于docker快速搭建hive环境

一.docker简介

1.1 docker架构

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。 Docker 容器通过 Docker 镜像来创建。 容器与镜像的关系类似于面向对象编程中的对象与类。

1.2 常用命令

介绍两个重要命令

Docker run :创建一个新的容器并运行一个命令

语法:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

Docker exec : 在已经启动的容器中执行命令

语法:docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

二.基于docker搭建hadoop环境

网上有很多hadoop的docker镜像,通过镜像快速搭建hadoop集群,这样可以很方便新手测试和学习。可以参考这个网站,基于Docker搭建Hadoop集群之升级版 来搭建hadoop集群环境,非常方便简单。

2.1 下载Docker镜像

sudo docker pull kiwenlau/hadoop:1.0

2.2 下载GitHub仓库

git clone https://github.com/kiwenlau/hadoop-cluster-docker 修改start-container.sh的脚本,增加hive的web端口(9999)和服务端口(10000),同时通过-v命令将本地目录挂载到对应的容器上,部分需要修改的内容如下:

sudo docker run -itd \
                --net=hadoop \
                -p 50070:50070 \
                -p 8088:8088 \
                -p 10000:10000 \
                -p 9999:9999 \
                --name hadoop-master \
                --hostname hadoop-master \
                -v /Users/pan/code/hadoop-cluster-docker/share:/opt \
                kiwenlau/hadoop:1.0 &> /dev/null

2.3 创建Hadoop网络

sudo docker network create --driver=bridge hadoop

2.4 运行Docker容器

cd hadoop-cluster-docker
./start-container.sh

运行结果:

start hadoop-master container...
start hadoop-slave1 container...
start hadoop-slave2 container...
root@hadoop-master:~#

2.5 启动hadoop

./start-hadoop.sh

Hadoop网页管理地址:

至此hadoop集群环境就搭建好了,并且容器也启动了,接下来就安装hive环境了。

三.hive环境安装

我们采用远程模式安装hive,也就是将Mysql数据库独立出来,将元数据保存在远端独立的Mysql服务器中。

3.1 安装Mysql

下载Mysql安装包,在本地安装mysql,并启动远程连接模式。

3.2 进入hadoop-maste服务器

docker exec -it hadoop-master /bin/bash

3.3 下载hive和mysql驱动器jar包

wget http://mirror.bit.edu.cn/apache/hive/hive-2.1.1/apache-hive-2.1.1-bin.tar.gz

tar -zxvf apache-hive-2.1.1-bin.tar.gz

wget http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.38/mysql-connector-java-5.1.38.jar

将mysql-connector-java-5.1.38.jar拷贝到hive的lib目录中。

3.4 配置hive-site.xml文件

从conf目录中复制一份模板出来,并命名为hive-site.xml

root@hadoop-master:~/apache-hive-2.1.1-bin# cp conf/hive-default.xml.template conf/hive-site.xml

修改其中的一些配置项:

  • mysql连接信息
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://192.168.100.105:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=true</value>

        <name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>

    <name>javax.jdo.option.ConnectionPassword</name>
    <value>123456</value>
  • 将conf/hive-site.xml中所有的system:java.io.tmpdir 和system:user.name都换成绝对路径。

3.5 hive元数据库初始化

schematool -dbtype mysql -initSchema

3.6 进入hive-cli模式中

在保证hadoop启动、mysql数据库能够正常连接,可以执行一下命令

root@hadoop-master:~/apache-hive-2.1.1-bin# ./bin/hive

执行结果如下:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/root/apache-hive-2.1.1-bin/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/local/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]

Logging initialized using configuration in jar:file:/root/apache-hive-2.1.1-bin/lib/hive-common-2.1.1.jar!/hive-log4j2.properties Async: true
Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. tez, spark) or using Hive 1.X releases.
hive>

results matching ""

    No results matching ""