国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Hive架構(gòu)原理和性能優(yōu)化

IT那活兒 / 3079人閱讀
Hive架構(gòu)原理和性能優(yōu)化
一. Hive介紹

hive是基于Hadoop的一個數(shù)據(jù)倉庫工具,用來進行數(shù)據(jù)提取、轉(zhuǎn)化、加載,這是一種可以存儲、查詢和分析存儲在Hadoop中的大規(guī)模數(shù)據(jù)的機制。hive數(shù)據(jù)倉庫工具能將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供SQL查詢功能,能將SQL語句轉(zhuǎn)變成MapReduce任務(wù)來執(zhí)行。

為什么要使用Hive?

  • MapReduce實現(xiàn)復雜查詢邏輯開發(fā)難度太大,避免了去寫MapReduce,減少開發(fā)人員的學習成本。

  • 操作接口采用類SQL語法,提供快速開發(fā)的能力。

  • Hive支持用戶自定義函數(shù),用戶可以根據(jù)自己的需求來實現(xiàn)自己的函數(shù)。

提供統(tǒng)一的元數(shù)據(jù)管理。

  • Hive很容易擴展本身的存儲能力和計算能力(數(shù)倉),最適合應(yīng)用在基于大量不可變數(shù)據(jù)的批處理作業(yè)。

Hive的缺點:

  1. Hive的HQL表達能力有限,如迭代式算法無法表達。

  2. Hive自動生成的MapReduce作業(yè),粒度較粗,運行效率不算高。


二. Hive架構(gòu)及原理


1. 用戶接口:Client

CLI(command-line interface)、JDBC/ODBC(jdbc訪問hive)、WEBUI(瀏覽器訪問hive)

2. 元數(shù)據(jù):Metastore

元數(shù)據(jù)包括:表名、表所屬的數(shù)據(jù)庫(默認是default)、表的擁有者、列/分區(qū)字段、表的類型(是否是外部表)、表的數(shù)據(jù)所在目錄等;一般結(jié)合MySQL數(shù)據(jù)庫來存儲Metastore

3. Hadoop

使用HDFS進行存儲,使用MapReduce進行計算。

4. 驅(qū)動器:Driver

  • 解析器(SQL Parser):

    將SQL字符串轉(zhuǎn)換成抽象語法樹AST,這一步一般都用第三方工具庫完成,比如antlr;對AST進行語法分析,比如表是否存在、字段是否存在、SQL語義是否有誤。

  • 編譯器(Physical Plan):

    將AST編譯生成邏輯執(zhí)行計劃。

  • 優(yōu)化器(Query Optimizer):

    對邏輯執(zhí)行計劃進行優(yōu)化。

  • 執(zhí)行器(Execution):

    把邏輯執(zhí)行計劃轉(zhuǎn)換成可以運行的物理計劃。對于Hive來說,就是MR/Spark。


三. DDL、DML操作

1. DDL 操作
CREATE DATABASE/SCHEMA, TABLE, VIEW, FUNCTION, INDEX
DROP DATABASE/SCHEMA, TABLE, VIEW, INDEX
TRUNCATE TABLE
ALTER DATABASE/SCHEMA, TABLE, VIEW
MSCK REPAIR TABLE (or ALTER TABLE RECOVER PARTITIONS)
SHOW DATABASES/SCHEMAS, TABLES, TBLPROPERTIES, VIEWS, PARTITIONS, FUNCTIONS, INDEX[ES], COLUMNS, CREATE TABLE
DESCRIBE DATABASE/SCHEMA, table_name, view_name, materialized_view_name

創(chuàng)建數(shù)據(jù)庫:

create database if not exists hive; show databases;

創(chuàng)建學生表:

create table student(Sno int,Sname string,Sex string,Sage int,Sdept string)row format delimited fields terminated by ,stored as textfile;

創(chuàng)建課程表

create table course(Cno int,Cname string) row format delimited fields terminated by , stored as textfile;

創(chuàng)建分數(shù)表

create table sc(Sno int,Cno int,Grade int)row format delimited fields terminated by , stored as textfile;

插入數(shù)據(jù)到表

insert into  student values(95001,李勇,男,20,CS);

或者批量插入數(shù)據(jù)到學生,課程,分數(shù)表

load data local inpath /home/gpadmin/hivedata/students.txt overwrite into table student;

2. DML操作

查詢學生的總?cè)藬?shù)

select count(distinct Sno)count from student;

查詢各科成績平均分

select Cno,avg(Grade) from sc group by Cno;

查詢選修了3門以上的課程的學生學號

select Sno from (select Sno,count(Cno) CountCno from sc group by Sno)a where a.CountCno>3;

查詢選修了課程的學生姓名(inner join)

select distinct Sname from student inner join sc on student.Sno=Sc.Sno;

hive命令執(zhí)行:

hive -e "select * from hive.student;"

delete /update語法

表本身能支持ACID

3. 可視化客戶端工具

DBeave


四. Hive性能優(yōu)化

1. join優(yōu)化

小表驅(qū)動大表,Join操作的Reduce階段,位于Join操作符左邊的表的內(nèi)容會被加載進內(nèi)存,將條目少的表放在左邊,可以有效減少發(fā)生內(nèi)存溢出錯誤的幾率。

2. 數(shù)據(jù)傾斜

(1)key分布不均勻

(2)業(yè)務(wù)數(shù)據(jù)本身的特性

(3)建表時考慮不周

(4)某些SQL語句本身就有數(shù)據(jù)傾斜

參數(shù)優(yōu)化:hive.map.aggr=true 聚合操作放在Map階段執(zhí)行,從而減輕清洗階段數(shù)據(jù)傳輸和Reduce階段的執(zhí)行時間,提升總體性能、join傾斜設(shè)置hive.optimize.skewjoin=true、group by傾斜設(shè)置hive.groupby.skewindata=true等

3. 合并小文件

小文件過多,會給 HDFS 帶來壓力,影響處理效率,可以通過合并 Map 和 Reduce 的結(jié)果文件來消除這樣的影響(修改hive hive-site.xml配置文件):

hive.merge.mapfiles = true是否合并 Map 輸出文件,默認為 True

hive.merge.mapredfiles = false是否合并 Reduce 輸出文件,默認為 False

hive.merge.size.per.task = 256*1000*1000合并文件的大小

4. 排序優(yōu)化

Order by  對查詢結(jié)果進行全局排序,消耗時間長

Sort by 實現(xiàn)部分有序,單個reduce輸出的結(jié)果是有序的,效率高


參數(shù)設(shè)置:
hive-site.xm永久生效/hive --hiveconf 單次生效/cli set 會話有效。


END


更多精彩干貨分享

點擊下方名片關(guān)注

IT那活兒

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/129846.html

相關(guān)文章

  • SparkSQL 在有贊的實踐

    摘要:在有贊的技術(shù)演進。業(yè)務(wù)數(shù)據(jù)量正在不斷增大,這些任務(wù)會影響業(yè)務(wù)對外服務(wù)的承諾。監(jiān)控需要收集上執(zhí)行的的審計信息,包括提交者執(zhí)行的具體,開始結(jié)束時間,執(zhí)行完成狀態(tài)。還有一點是詳細介紹了的原理,實踐中設(shè)置了的比默認的減少了以上的時間。 前言 有贊數(shù)據(jù)平臺從2017年上半年開始,逐步使用 SparkSQL 替代 Hive 執(zhí)行離線任務(wù),目前 SparkSQL 每天的運行作業(yè)數(shù)量5000個,占離線...

    hzx 評論0 收藏0
  • SparkSQL 在有贊的實踐

    摘要:在有贊的技術(shù)演進。業(yè)務(wù)數(shù)據(jù)量正在不斷增大,這些任務(wù)會影響業(yè)務(wù)對外服務(wù)的承諾。監(jiān)控需要收集上執(zhí)行的的審計信息,包括提交者執(zhí)行的具體,開始結(jié)束時間,執(zhí)行完成狀態(tài)。還有一點是詳細介紹了的原理,實踐中設(shè)置了的比默認的減少了以上的時間。 前言 有贊數(shù)據(jù)平臺從2017年上半年開始,逐步使用 SparkSQL 替代 Hive 執(zhí)行離線任務(wù),目前 SparkSQL 每天的運行作業(yè)數(shù)量5000個,占離線...

    Xufc 評論0 收藏0

發(fā)表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<