一、hive產生背景
Apache Hive數據倉庫軟件可以使用SQL方便地閱讀、編寫和管理分布在分布式存儲中的大型數據集。結構可以投射到已經存儲的數據上。提供了一個命令行工具和JDBC驅動程序來將用戶連接到Hive。
? 由Facebook開源,最初用于解決海量結構化的日志數據統計問題
? MapReduce編程的不便性
? HDFS上的文件缺少Schema(字段名,字段類型等)
二、Hive是什么
? 構建在Hadoop之上的數據倉庫
? Hive定義了一種類SQL查詢語言:HQL(類似SQL但不完全相同)
? 通常用于進行離線數據處理(采用MapReduce)
? 底層支持多種不同的執行引擎(Hive on MapReduce、Hive on Tez、Hive on Spark)
? 支持多種不同的壓縮格式、存儲格式以及自定義函數(壓縮:GZIP、LZO、Snappy、BZIP2.. ; 存儲:TextFile、SequenceFile、RCFile、ORC、Parquet ; UDF:自定義函數)
到底什么是Hive,我們先看看Hive官網Wiki是如何介紹Hive的(https://cwiki.apache.org/confluence/display/Hive/Home):
Apache Hive Apache Hive? 數據倉庫軟件為分布式存儲的大數據集上的讀、寫、管理提供很大方便,同時還可以用SQL語法在大數據集上查詢。
1、是一種易于對數據實現提取、轉換、加載的工具(ETL)的工具??梢岳斫鉃閿祿逑捶治稣宫F。 2、它有一種將大量格式化數據強加上結構的機制。 3、它可以分析處理直接存儲在hdfs中的數據或者是別的數據存儲系統中的數據,如hbase。 4、查詢的執行經由mapreduce完成。 5、hive可以使用存儲過程 6、通過Apache YARN和Apache Slider實現亞秒級的查詢檢索。
三、hive的安裝
1.hive的單機安裝(使用derby做元數據存儲)
? 安裝包準備
將hive安裝包 apache-hive-1.2.1-bin.tar.gz 上傳到虛擬機/bigdata/下
JDK安裝包 jdk-8u151-x64.gz
集群的準備(linux1,linux2,linux3)
? hive的解壓安裝
將上傳的hive解壓縮至虛擬機/app目錄下
tar -zxvf /app/apache-hive-1.2.1-bin.tar.gz -C /app
mv /app/apache-hive-1.2.1-bin/ /app/hive-1.2.1
? 配置hive的配置文件
查看配置文件內容
拷貝配置文件hive-env.sh.template為hive-env.sh
cp /app/hive-1.2.1/conf/hive-env.sh.template /app/hive-1.2.1/conf/hive-env.sh
vim /app/hive-1.2.1/conf/hive-env.sh
? 配置hive的環境變量
vim /etc/profile
source /etc/profile
which hive
? 啟動hadoop集群
? 啟動hive服務
hive
? 查看數據庫
show databases;
? 創建數據庫
create database myhive;
show databases;
? 創建表
create table student(id int,chinese string,math string,English string);
? 加載數據并查詢
load data local inpath '/root/student.txt' into table student;
select * from student;
2.hive的獨立安裝模式(使用mysql做元數據存儲)
? 安裝MySQL服務器端和MySQL客戶端,并啟動mysql服務。
? 在linux1上為Hive建立相應的MySQL賬戶,并賦予足夠的權限
create user 'hive' identified by '123456';
GRANT ALL PRIVILEGES ON *.* TO hive@'%' IDENTIFIED BY '123456' with grant option;
GRANT ALL PRIVILEGES ON *.* TO hive@'localhost' IDENTIFIED BY '123456' with grant option;
flush privileges
查看是否成功
? 在內嵌模式下繼續配置hive:hive-site.xml,hive-env.sh
配置hive-env.sh
配置hive-site.xml,拷貝/app/hive-1.2.1/conf下的hive-default.xml文件為hive-site.xml
cp /app/hive-1.2.1/conf/hive-default.xml.template /app/hive-1.2.1/conf/hive-site.xml
vim /app/hive-1.2.1/conf/hive-site.xml
? 拷貝數據驅動jar包到指定目錄/app/hive-1.2.1/lib/下。沒有驅動包會報錯
? 使用命令行的方式啟動hive服務,然后查看數據庫,創建數據庫名為heihei,查看集群web頁面
查看集群web頁面,可以看見在hdfs上生成了對應heihei數據庫的文件目錄
? 使用beeline訪問hive
exit命令退出剛才的hive服務,在linux1上修改hadoop 配置文件 etc/hadoop/core-site.xml,加入如下配置項, 通過httpfs接口匿名的方式登錄到hdfs文件系統。然后重新啟動集群。
<property>
<name> hadoop.proxyuser.root.hosts </name>
<value> * </value>
</property>
<property>
<name> hadoop.proxyuser.root.groups </name>
<value> * </value>
</property>
使用命令hive --service hiveserver2 & 后臺啟動hive服務
hive --service hiveserver2 &
克隆窗口作為客戶端連接,執行beeline腳本
連接服務端,這種方式使用了thrift服務,10000為默認的連接端口號
!connect jdbc:hive2://linux1:10000
驗證連接的是不是我們剛才用命令行方式訪問的hive服務
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。