深入探索ApacheHive:从容器化到Kubernetes部署
立即解锁
发布时间: 2025-08-30 00:12:51 阅读量: 6 订阅数: 20 AIGC 

### 深入探索 Apache Hive:从容器化到 Kubernetes 部署
#### 1. Apache Hive 简介
Apache Hive 最初由 Facebook 开发,后被捐赠给 Apache 软件基金会。像 Netflix 和 FINRA 等组织使用 Hive 来查询分布式存储系统(如 Hadoop 的 HDFS 和 Amazon S3)中的海量结构化数据。Hive 通过提供标准 SQL 接口,简化了查询大数据通常所需的复杂 MapReduce 作业。虽然 Hive 不是数据库,但它能够将模式应用于存储在 HDFS 或兼容 S3 的存储中的任何结构化数据。Amazon 的 AWS 提供了包含 Hive 版本的 Elastic MapReduce 服务。
Apache Hive 使组织能够利用大量未由正式数据库管理系统管理的结构化数据、稳定的物联网数据流、遗留系统的导出数据以及临时数据摄取。通过在庞大的数据湖之上提供 SQL 接口、元数据和模式,Hive 降低了进行数据科学活动(包括商业分析、商业智能和机器学习)的复杂性和工作量。
#### 2. 容器化 Apache Hive
为了让 Apache Hive 能更好地与 Kubernetes 集成并进行本地实验,我们需要构建一个自定义容器。具体步骤如下:
1. **创建目录并下载文件**:
```bash
mkdir -p apk8s-hive/src
cd apk8s-hive
curl -L http://mirror.cc.columbia.edu/pub/software/apache/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz -o ./src/apache-hive-3.1.2-bin.tar.gz
curl -L http://archive.apache.org/dist/hadoop/common/hadoop-3.1.2/hadoop-3.1.2.tar.gz -o ./src/hadoop-3.1.2.tar.gz
tar -xzvf ./src/apache-hive-3.1.2-bin.tar.gz -C ./src
tar -xzvf ./src/hadoop-3.1.2.tar.gz -C ./src
```
2. **添加 JAR 文件扩展功能**:
```bash
export HIVE_LIB=$(pwd)/src/apache-hive-3.1.2-bin/lib
export MIRROR=https://repo1.maven.org/maven2
curl $MIRROR/org/apache/hadoop/hadoop-aws/3.1.1/hadoop-aws-3.1.1.jar -o $HIVE_LIB/hadoop-aws-3.1.1.jar
curl $MIRROR/com/amazonaws/aws-java-sdk/1.11.406/aws-java-sdk-1.11.307.jar -o $HIVE_LIB/aws-java-sdk-1.11.307.jar
curl $MIRROR/com/amazonaws/aws-java-sdk-core/1.11.307/aws-java-sdk-core-1.11.307.jar -o $HIVE_LIB/aws-java-sdk-core-1.11.307.jar
curl $MIRROR/com/amazonaws/aws-java-sdk-dynamodb/1.11.307/aws-java-sdk-dynamodb-1.11.307.jar -o $HIVE_LIB/aws-java-sdk-dynamodb-1.11.307.jar
curl $MIRROR/com/amazonaws/aws-java-sdk-kms/1.11.307/aws-java-sdk-kms-1.11.307.jar -o $HIVE_LIB/aws-java-sdk-kms-1.11.307.jar
curl $MIRROR/com/amazonaws/aws-java-sdk-s3/1.11.307/aws-java-sdk-s3-1.11.307.jar -o $HIVE_LIB/aws-java-sdk-s3-1.11.307.jar
curl $MIRROR/org/apache/httpcomponents/httpclient/4.5.3/httpclient-4.5.3.jar -o $HIVE_LIB/httpclient-4.5.3.jar
curl $MIRROR/joda-time/joda-time/2.9.9/joda-time-2.9.9.jar -o $HIVE_LIB/joda-time-2.9.9.jar
curl $MIRROR/mysql/mysql-connector-java/5.1.48/mysql-connector-java-5.1.48.jar -o $HIVE_LIB/mysql-connector-java-5.1.48.jar
```
3. **创建配置文件模板**:
创建 `hive-site-template.xml` 文件,内容如下:
```xml
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://MYSQL_ENDPOINT/objectmetastore?createDatabaseIfNotExist=true&useSSL=false</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>MYSQL_USER</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>MYSQL_PASSWORD</value>
</property>
<property>
<name>fs.s3a.endpoint</name>
<value>S3A_ENDPOINT</value>
</property>
<property>
<name>fs.s3a.access.key</name>
<value>S3A_ACCESS_KEY</value>
</property>
<property>
<name>fs.s3a.secret.key</name>
<value>S3A_SECRET_KEY</value>
</property>
<property>
<name>fs.s3a.path.style.access</name>
<value>S3A_PATH_STYLE_ACCESS</value>
</property>
</configuration>
```
4. **创建入口脚本**:
创建 `entrypoint.sh` 脚本,内容如下:
```bash
#!/bin/bash
# provide ample time for other services to come online
sleep 10
# configuration file location
HIVE_CONF="/opt/hive/conf/hive-site.xml"
# template replacements
for v in \
MY
```
0
0
复制全文
相关推荐









