首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Hive 1.2.1、Spark 與 Sqoop 整合部署完整指南

     編輯:Java 綜合教學

架構規劃與前置條件

  • Hadoop 2.7.1 已部署於 /data/hadoop/current
  • MySQL 5.7.10 作為 Metastore,部署於 172.25.39.166,資料目錄 /data/mysql/data
  • ZooKeeper 叢集三節點:10.12.154.77/78/79
  • Hive 安裝目錄 /data/hadoop/hive(指向 hive-1.2.1-bin)

MySQL 安裝關鍵步驟

# 建立用戶與目錄
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
mkdir -p /data/mysql/data
ln -s /data/mysql/data /usr/local/mysql/data
chown -R mysql:mysql /data/mysql/data

# 初始化(記住臨時 root 密碼)
bin/mysqld --initialize --user=mysql --explicit_defaults_for_timestamp
bin/mysql_ssl_rsa_setup

# 啟動並設定開機自啟
bin/mysqld_safe --user=mysql &
cp support-files/mysql.server /etc/init.d/mysql.server

建立 Hive Metastore

CREATE DATABASE IF NOT EXISTS hive;
CREATE USER 'hive'@'%' IDENTIFIED BY 'hive2016';
GRANT ALL ON hive.* TO 'hive'@'%' IDENTIFIED BY 'hive2016';
FLUSH PRIVILEGES;

Hive 核心配置(hive-site.xml 關鍵項)

參數範例值說明
javax.jdo.option.ConnectionURLjdbc:mysql://172.25.39.166:3306/hive?useSSL=falseMetastore JDBC 連線,**必加 useSSL=false**
javax.jdo.option.ConnectionDriverNamecom.mysql.jdbc.DriverMySQL JDBC 驅動
javax.jdo.option.ConnectionUserNamehive
javax.jdo.option.ConnectionPasswordhive2016
hive.metastore.uristhrift://172.25.40.171:9083Metastore RPC 服務
hive.metastore.warehouse.dir/data/hadoop/hive/warehouse資料倉庫根目錄
hive.server2.thrift.bind.host0.0.0.0允許遠端連線
hive.zookeeper.quorumzk1,zk2,zk3建議用主機名而非 IP

啟動驗證流程

  1. schematool -dbType mysql -initSchema 初始化 Metastore
  2. hive --service metastore & 啟動 Metastore
  3. hiveserver2 & 啟動 HiveServer2
  4. 用 beeline 連線驗證:
    !connect jdbc:hive2://172.25.40.171:10000 hive hive2016 org.apache.hive.jdbc.HiveDriver

Spark 整合 Hive(三步走)

# 1. spark-env.sh
export HIVE_HOME=/data/hadoop/hive

# 2. 複製配置
cp $HIVE_HOME/conf/hive-site.xml $SPARK_HOME/conf/
cp $HIVE_HOME/conf/hive-log4j.properties $SPARK_HOME/conf/

# 3. 啟動 spark-sql(需帶 MySQL 驅動)
./spark-sql --master yarn --driver-class-path /data/hadoop/hive/lib/mysql-connector-java-5.1.38-bin.jar

Sqoop 1.4.6 整合 Hive

# sqoop-env.sh 關鍵環境變數
export HADOOP_COMMON_HOME=/data/hadoop
export HADOOP_MAPRED_HOME=/data/hadoop/share/hadoop/common
export HBASE_HOME=/data/hbase
export HIVE_HOME=/data/hadoop/hive
export ZOOCFGDIR=/data/zookeeper/conf

# 驗證:從 MySQL 匯入 Hive
./sqoop import \
  --connect jdbc:mysql://127.0.0.1:3306/test \
  --username zhangsan --password 'zhangsan2016' \
  --table t_test --hive-import -m 6 \
  --hive-table t_test_2016 --direct

常見坑位速查表

錯誤現象根因解決
TIMESTAMP implicit DEFAULT deprecatedMySQL 5.6+ 預設行為變更加 --explicit_defaults_for_timestamp
Can't find errmsg.sysbasedir/datadir 不符預期指定 --basedir --datadir
Failed to connect MetaStoreMetastore 未啟動先啟 hive --service metastore
Version information not found未初始化 Schema執行 schematool -initSchema
SSL connection warningMySQL 5.7+ 預設要求 SSLJDBC URL 加 useSSL=false
SPARK_CLASSPATH deprecatedSpark 1.0+ 不建議用此環境變數改用 --driver-class-path

高可用單點方案

部署兩組 Hive + MySQL 主主同步,同一時間僅一組提供服務,透過 VIP 或 DNS 切換實現故障轉移。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved