docker中的hive以及mysql安装

本文介绍如何在Docker环境下安装MySQL并将其作为Hive的元数据存储。通过拉取MySQL镜像并配置相应的参数实现MySQL的快速部署,然后详细说明如何修改Hive配置文件以便将MySQL设置为Hive的元数据存储。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我的hadoop集群是部署在docker上的,所以hive和mysql的安装也要在docker上,在ubuntu系统中使用命令apt-get install mysql-server就可以直接安装mysql,但是在docker容器中使用这个命令会报没有权限的错误,在root下也会报这个错,所以一直没有安装成功,后来使用docker官方镜像安装才成功

1.mysql的安装:

首先拉去镜像

docker pull mysql:5.7

创建用于挂载的目录

mkdir -p /my/mysql/datadir        *用于挂载mysql数据文件

mkdir -p /my/mysql/conf.d          *用于挂载mysql的配置文件

创建容器

docker run --name=mysql -p 3306 -v /my/mysql/datadir:/my/mysql/datadir -v /my/mysql/conf.d:/my/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root -i -t mysql:5.7

命令解析:

-p : 开放容器端口

-v : 挂载宿主目录到容器目录

-e : 指定root密码

连接mysql:

mysql -h+容器ip -uroot -p

输入root密码

2.将mysql作为hive的元数据的存储的数据库

这里前提是你已经安装了hive,并且能够正常运行,可以参考我之前的文章hive安装部署及初步使用,主要就是在hive-en.sh中进行路径的配置和创建相关的目录

要想将mysql作为元数据库,这里只需要再配置一个文件就可以了,首先进入到hive的conf目录下

vi hive-site.xml

在里面输入下边的内容

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
       <property>
               <name>javax.jdo.option.ConnectionURL</name>
               <value>jdbc:mysql://172.17.0.5:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false</value>   *这里改为你自己的容器ip
        </property>
        <property>
                <name>javax.jdo.option.ConnectionDriverName</name>
                <value>com.mysql.jdbc.Driver</value>
        </property>
        <property>
                 <name>javax.jdo.option.ConnectionUserName</name>
                  <value>root</value>
         </property>
         <property>
                   <name>javax.jdo.option.ConnectionPassword</name>
                    <value>root</value>                 
          </property>

 </configuration>

将mysql的驱动jar包放到hive的lib目录下

然后再运行hive,就可以在mysql数据库中生成一张hive表,用来保存元数据,如果不使用mysql来保存元数据,就会保存在自带的derby数据库中,这时候如果打开多个hive客户端,就会产生ava.sql.SQLException异常

这里需要注意的是hive的版本最好不要太高,我第一次用的是1.2.2的版本,第一次启动hive正常,再启动时就会报错,除非把mysql中新生成的数据库删除,后来换成0.14.0版本的,就没有这个错误了

 

<think>嗯,用户问的是如何在Docker安装Hive集群。首先,我需要回想一下Hive的基本架构。Hive依赖于Hadoop,所以Hadoop集群是必须的。Hive本身包括元数据存储,通常使用MySQL或PostgreSQL作为元数据库,所以可能需要先部署一个数据库服务。 接下来考虑Docker环境。用户可能已经熟悉Docker,但需要确认DockerDocker Compose是否已安装。可能需要分步骤指导,比如先准备Docker网络,然后逐个部署Hadoop的各个组件,比如NameNode、DataNode、ResourceManager、NodeManager等。 Hive安装部分,需要构建包含HiveDocker镜像,可能需要在镜像中配置Hadoop的环境变量,以及下载并配置Hive。另外,Hive的元数据存储需要连接到之前部署MySQL或PostgreSQL容器,所以需要配置数据库的连接信息。 还需要考虑配置文件,比如hive-site.xml,其中需要设置JDBC连接、存储路径等。可能需要挂载配置文件到容器中,或者在构建镜像时直接包含这些配置。 另外,用户可能希望整个集群在Docker Compose中一键启动,所以需要编写docker-compose.yml文件,定义各个服务之间的依赖关系,网络设置,卷挂载等。 需要注意的点包括容器之间的网络通信,确保各个Hadoop组件能够互相访问,Hive能够连接到MySQL和Hadoop的NameNode。此外,数据持久化的问题,可能需要挂载卷来保存HDFS的数据和MySQL的数据,防止容器重启后数据丢失。 测试步骤也是关键,安装完成后需要进入Hive容器执行一些HQL语句,或者通过beeline连接,验证集群是否正常工作。可能还需要检查Hadoop的Web界面,确认节点是否正常。 可能遇到的常见问题包括端口冲突,配置错误导致的连接失败,或者资源不足导致容器无法启动。需要提醒用户根据自身环境调整配置,比如内存分配,卷的路径等。 总结下来,步骤大致分为:准备Docker环境,部署Hadoop集群,配置元数据库,构建Hive镜像,编写docker-compose文件,启动集群,验证功能。需要详细说明每个步骤的具体操作和配置,确保用户能够按步骤完成安装。</think>以下是基于DockerHive集群部署步骤详解: --- ### 一、准备工作 1. 确保已安装: ```bash $ docker --version $ docker-compose --version ``` 2. 创建专用网络 ```bash $ docker network create hadoop-net ``` --- ### 二、Hadoop集群部署Hive依赖HDFS) 1. 创建docker-compose.yml ```yaml version: '3' services: namenode: image: bde2020/hadoop-namenode:2.0.0-hadoop3.2.1-java8 container_name: namenode networks: - hadoop-net environment: - CLUSTER_NAME=hive-cluster ports: - "9870:9870" # HDFS Web UI - "9000:9000" # HDFS服务端口 datanode1: image: bde2020/hadoop-datanode:2.0.0-hadoop3.2.1-java8 container_name: datanode1 networks: - hadoop-net environment: - SERVICE_PRECONDITION=namenode:9000 depends_on: - namenode resourcemanager: image: bde2020/hadoop-resourcemanager:2.0.0-hadoop3.2.1-java8 container_name: resourcemanager networks: - hadoop-net depends_on: - namenode networks: hadoop-net: external: true ``` 2. 启动Hadoop集群 ```bash $ docker-compose up -d ``` --- ### 三、MySQL元数据库部署 ```yaml # 添加到docker-compose.yml metastore-db: image: mysql:5.7 container_name: metastore-db environment: MYSQL_ROOT_PASSWORD: hive MYSQL_DATABASE: metastore networks: - hadoop-net volumes: - mysql_data:/var/lib/mysql volumes: mysql_data: ``` --- ### 四、Hive服务部署 1. 创建Dockerfile ```dockerfile FROM bde2020/hadoop-base:2.0.0-hadoop3.2.1-java8 ARG HIVE_VERSION=3.1.2 RUN curl -L https://downloads.apache.org/hive/hive-${HIVE_VERSION}/apache-hive-${HIVE_VERSION}-bin.tar.gz | tar zx -C /opt/ \ && mv /opt/apache-hive-${HIVE_VERSION}-bin /opt/hive ENV HIVE_HOME=/opt/hive ENV PATH=$HIVE_HOME/bin:$PATH # 配置Hive COPY hive-site.xml $HIVE_HOME/conf/ COPY entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh ENTRYPOINT ["/entrypoint.sh"] ``` 2. 创建hive-site.xml ```xml <configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://metastore-db:3306/metastore?createDatabaseIfNotExist=true</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>hive</value> </property> </configuration> ``` 3. 添加到docker-compose.yml ```yaml hive-server: build: . container_name: hive-server networks: - hadoop-net depends_on: - metastore-db - namenode ports: - "10000:10000" # HiveServer2 - "10002:10002" # Hive Web UI ``` --- ### 五、初始化元数据库 ```bash $ docker exec -it hive-server schematool -dbType mysql -initSchema ``` --- ### 六、验证部署 1. 进入Hive CLI ```bash $ docker exec -it hive-server hive > CREATE TABLE test(id INT); > SHOW TABLES; ``` 2. 通过Beeline连接 ```bash $ docker exec -it hive-server beeline -u jdbc:hive2://localhost:10000 ``` --- ### 常见问题处理 1. 元数据初始化失败:检查MySQL容器日志 2. HDFS连接问题:验证namenode:9000是否可达 3. 内存不足:在docker-compose中配置资源限制 > 提示:生产环境建议配置持久化卷存储HDFS数据和MySQL数据
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值