一、hive產(chǎn)生背景
成都創(chuàng)新互聯(lián)公司一直在為企業(yè)提供服務(wù),多年的磨煉,使我們?cè)趧?chuàng)意設(shè)計(jì),全網(wǎng)整合營銷推廣到技術(shù)研發(fā)擁有了開發(fā)經(jīng)驗(yàn)。我們擅長傾聽企業(yè)需求,挖掘用戶對(duì)產(chǎn)品需求服務(wù)價(jià)值,為企業(yè)制作有用的創(chuàng)意設(shè)計(jì)體驗(yàn)。核心團(tuán)隊(duì)擁有超過10余年以上行業(yè)經(jīng)驗(yàn),涵蓋創(chuàng)意,策化,開發(fā)等專業(yè)領(lǐng)域,公司涉及領(lǐng)域有基礎(chǔ)互聯(lián)網(wǎng)服務(wù)溫江服務(wù)器托管、重慶APP開發(fā)公司、手機(jī)移動(dòng)建站、網(wǎng)頁設(shè)計(jì)、網(wǎng)絡(luò)整合營銷。
Apache Hive數(shù)據(jù)倉庫軟件可以使用SQL方便地閱讀、編寫和管理分布在分布式存儲(chǔ)中的大型數(shù)據(jù)集。結(jié)構(gòu)可以投射到已經(jīng)存儲(chǔ)的數(shù)據(jù)上。提供了一個(gè)命令行工具和JDBC驅(qū)動(dòng)程序來將用戶連接到Hive。
? 由Facebook開源,最初用于解決海量結(jié)構(gòu)化的日志數(shù)據(jù)統(tǒng)計(jì)問題
? MapReduce編程的不便性
? HDFS上的文件缺少Schema(字段名,字段類型等)
二、Hive是什么
? 構(gòu)建在Hadoop之上的數(shù)據(jù)倉庫
? Hive定義了一種類SQL查詢語言:HQL(類似SQL但不完全相同)
? 通常用于進(jìn)行離線數(shù)據(jù)處理(采用MapReduce)
? 底層支持多種不同的執(zhí)行引擎(Hive on MapReduce、Hive on Tez、Hive on Spark)
? 支持多種不同的壓縮格式、存儲(chǔ)格式以及自定義函數(shù)(壓縮:GZIP、LZO、Snappy、BZIP2.. ; 存儲(chǔ):TextFile、SequenceFile、RCFile、ORC、Parquet ; UDF:自定義函數(shù))
到底什么是Hive,我們先看看Hive官網(wǎng)Wiki是如何介紹Hive的(https://cwiki.apache.org/confluence/display/Hive/Home):
Apache Hive Apache Hive? 數(shù)據(jù)倉庫軟件為分布式存儲(chǔ)的大數(shù)據(jù)集上的讀、寫、管理提供很大方便,同時(shí)還可以用SQL語法在大數(shù)據(jù)集上查詢。
1、是一種易于對(duì)數(shù)據(jù)實(shí)現(xiàn)提取、轉(zhuǎn)換、加載的工具(ETL)的工具??梢岳斫鉃閿?shù)據(jù)清洗分析展現(xiàn)。 2、它有一種將大量格式化數(shù)據(jù)強(qiáng)加上結(jié)構(gòu)的機(jī)制。 3、它可以分析處理直接存儲(chǔ)在hdfs中的數(shù)據(jù)或者是別的數(shù)據(jù)存儲(chǔ)系統(tǒng)中的數(shù)據(jù),如hbase。 4、查詢的執(zhí)行經(jīng)由mapreduce完成。 5、hive可以使用存儲(chǔ)過程 6、通過Apache YARN和Apache Slider實(shí)現(xiàn)亞秒級(jí)的查詢檢索。
三、hive的安裝
1.hive的單機(jī)安裝(使用derby做元數(shù)據(jù)存儲(chǔ))
? 安裝包準(zhǔn)備
將hive安裝包 apache-hive-1.2.1-bin.tar.gz 上傳到虛擬機(jī)/bigdata/下
JDK安裝包 jdk-8u151-x64.gz
集群的準(zhǔn)備(linux1,linux2,linux3)
? hive的解壓安裝
將上傳的hive解壓縮至虛擬機(jī)/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的配置文件
查看配置文件內(nèi)容
拷貝配置文件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的環(huán)境變量
vim /etc/profile
source /etc/profile
which hive
? 啟動(dòng)hadoop集群
? 啟動(dòng)hive服務(wù)
hive
? 查看數(shù)據(jù)庫
show databases;
? 創(chuàng)建數(shù)據(jù)庫
create database myhive;
show databases;
? 創(chuàng)建表
create table student(id int,chinese string,math string,English string);
? 加載數(shù)據(jù)并查詢
load data local inpath '/root/student.txt' into table student;
select * from student;
2.hive的獨(dú)立安裝模式(使用MySQL做元數(shù)據(jù)存儲(chǔ))
? 安裝MySQL服務(wù)器端和MySQL客戶端,并啟動(dòng)mysql服務(wù)。
? 在linux1上為Hive建立相應(yīng)的MySQL賬戶,并賦予足夠的權(quán)限
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
查看是否成功
? 在內(nèi)嵌模式下繼續(xù)配置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
? 拷貝數(shù)據(jù)驅(qū)動(dòng)jar包到指定目錄/app/hive-1.2.1/lib/下。沒有驅(qū)動(dòng)包會(huì)報(bào)錯(cuò)
? 使用命令行的方式啟動(dòng)hive服務(wù),然后查看數(shù)據(jù)庫,創(chuàng)建數(shù)據(jù)庫名為heihei,查看集群web頁面
查看集群web頁面,可以看見在hdfs上生成了對(duì)應(yīng)heihei數(shù)據(jù)庫的文件目錄
? 使用beeline訪問hive
exit命令退出剛才的hive服務(wù),在linux1上修改hadoop 配置文件 etc/hadoop/core-site.xml,加入如下配置項(xiàng), 通過httpfs接口匿名的方式登錄到hdfs文件系統(tǒng)。然后重新啟動(dòng)集群。
使用命令hive --service hiveserver2 & 后臺(tái)啟動(dòng)hive服務(wù)
hive --service hiveserver2 &
克隆窗口作為客戶端連接,執(zhí)行beeline腳本
連接服務(wù)端,這種方式使用了thrift服務(wù),10000為默認(rèn)的連接端口號(hào)
!connect jdbc:hive2://linux1:10000
驗(yàn)證連接的是不是我們剛才用命令行方式訪問的hive服務(wù)