hive簡介與安裝
概念
Hive 是基于 hadoop 的一個資料倉庫工具。由 facebook 開源,用于解決結構化日志的資料統計。 hive 可以将結構化的資料映射為一張表,并提供了類 sql 的查詢功能,用來做資料分析。
hive 本質上是一個類用戶端工具,真實的資料依然存儲在 hdfs 中。 hive 把 hdfs 的結構化資料通過模式關系映射為一張結構化資料庫表來進行操作與使用,hive 把這種結構化的模式關系稱為 meta store 中繼資料,儲存在自帶的 derby 資料庫或配置的mysql 資料庫。hive 執行sql 語句的本質,是把 sql 語句解析成 MapReduce 程式在 yarn 上排程執行。本質上 hive 不适合實時處理和小資料處理。hive 适合應用在 大資料的批處理,這樣才能發揮hive sql 基于 mapreduce 的并發計算能力。hive 是資料倉庫,因為上面所說的延遲計算(執行)的性質,是以hive 不适合做線上應用的實時查詢資料庫。hive 的擴充性和資料并行計算的特性都是基于 hadoop 的 hdfs 和mapreduce。hive 不同于關系資料庫支援索引,Hive在加載資料的過程中不會對資料進行任何處理,甚至不會對資料進行掃描,是以也沒有對資料中的某些Key建立索引。Hive要通路資料中滿足條件的特定值時,需要暴力掃描整個資料,是以通路延遲較高。由于 MapReduce 的引入, Hive 可以并行通路資料,是以即使沒有索引,對于大資料量的通路,Hive 仍然可以展現出優勢。資料庫中,通常會針對一個或者幾個列建立索引,是以對于少量的特定條件的資料的通路,資料庫可以有很高的效率,較低的延遲。由于資料的通路延遲較高,決定了 Hive 不适合線上資料查詢。
hive 的安裝
因為hive是資料倉庫工具,是以不用去搭建什麼分布式環境,隻需要在本地安裝部署即可。
上傳 hive 離線包到家 ~ 目錄(注意 hive 版本)
解壓hive資源并修改權限
# 解壓到 /opt/module 下
sudo tar -xzvf hive.tar.gz -c /opt/module
# 重命名檔案
cd /opt/module
sudo mv hive-1.1.0 hive
# 修改權限
sudo chown -R hadoop ./hive
修改 hive-env.sh 配置檔案
配置檔案都在 hive 的安裝目錄下的 conf 檔案夾下
# 重命名為 hive-env.sh
mv hive-env.sh.template hive-env.sh
# 修該配置(可以通過 vim /或者? 檢索)
vim hive-env.sh
# Hadoop 安裝目錄
export HADOOP_HOME=/opt/module/hadoop
# hive配置目錄
export HIVE_CONF_DIR=/opt/module/hive/conf
修改 hive-log4j.properties 配置
# 重命名
mv hive-log4j.properties.template hive-log4j.properties
# 建立日志存放目錄
mkdir /opt/module/hive/logs
# 修該配置(可以通過 vim /或者? 檢索)
vim hive-log4j.properties
修改日志存放目錄
hive.log.dir=/opt/module/hive/logs
修改 zookeeper的jar 包
如果安裝了 zookeeper ,需要修改 hive 中zookeeper 的 jar 包
# 删除 hive 中 zookeeper 的jar 包
rm -rf /opt/module/lib//zookeeper-*.*.*.jar
# 拷貝 zookeeper jar 包到hive lib 目錄下
cp /opt/module/zookeepe/zookeeper-*.*.*.jar /opt/hive/lib/
hive 啟動
配置 hive 環境變量
vim /etc/profile
添加如下配置
# hive
export HIVE_HOME=/opt/module/hive
export PATH=$PATH:$HIVE_HOME/bin
hive 啟動
# hive 運作在 hadoop 之上,是以先啟動 hdfs 和 yarn
start-dfs.sh # 配置好 hadoop 環境變量
start-yarn.sh
# 啟動 hive 用戶端
hive # 這裡的 資料庫名提示,一會配置
hive 安裝擴充
安裝mysql 資料庫作為 meta store 中繼資料庫
安裝mysql https://blog.csdn.net/HYESC/article/details/100074665
修改 mysql 相關配置
mysql -u root -p
# 建立 hive 資料庫用于存儲中繼資料 meta store
create database hive;
# 建立 hive 使用者
grant all on *.* to [email protected] identified by 'hive';
#重新整理mysql系統權限關系表
flush privileges;
上傳mysql驅動到 hive lib 中
# hive 中mysql資料庫的驅動影響 hive 連接配接資料庫的使用,這裡采用如下版本驅動完全适應 hive 版本,
cp mysql-connector-java-5.1.46-bin.jar /opt/module/hive/lib/
修改 hive-site.xml(hive 安裝目錄 conf 下)配置 mysql 資料庫
# 如果沒有 hive-site.xml 檔案直接 vim hive-site.xml 建立,如果有hive-site.xml.template則進行重命名
vim hive-site.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl" target="_blank" rel="external nofollow" ?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
<description>password to use against metastore database</description>
</property>
<!--顯示标頭資訊-->
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
</configuration>
修改 hive-site.xml 配置顯示标頭資訊
參考上部配置的 最後的 <!--顯示标頭資訊-->
<!--顯示标頭資訊-->
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
啟動hive
檢視mysql