成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

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

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

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

為什么要使用Hive?

  • MapReduce實(shí)現(xiàn)復(fù)雜查詢(xún)邏輯開(kāi)發(fā)難度太大,避免了去寫(xiě)MapReduce,減少開(kāi)發(fā)人員的學(xué)習(xí)成本。

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

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

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

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

Hive的缺點(diǎn):

  1. Hive的HQL表達(dá)能力有限,如迭代式算法無(wú)法表達(dá)。

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


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


1. 用戶(hù)接口:Client

CLI(command-line interface)、JDBC/ODBC(jdbc訪(fǎng)問(wèn)hive)、WEBUI(瀏覽器訪(fǎng)問(wèn)hive)

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

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

3. Hadoop

使用HDFS進(jìn)行存儲(chǔ),使用MapReduce進(jìn)行計(jì)算。

4. 驅(qū)動(dòng)器:Driver

  • 解析器(SQL Parser):

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

  • 編譯器(Physical Plan):

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

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

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

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

    把邏輯執(zhí)行計(jì)劃轉(zhuǎn)換成可以運(yùn)行的物理計(jì)劃。對(duì)于Hive來(lái)說(shuō),就是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ù)庫(kù):

create database if not exists hive; show databases;

創(chuàng)建學(xué)生表:

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)建分?jǐn)?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ù)到學(xué)生,課程,分?jǐn)?shù)表

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

2. DML操作

查詢(xún)學(xué)生的總?cè)藬?shù)

select count(distinct Sno)count from student;

查詢(xún)各科成績(jī)平均分

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

查詢(xún)選修了3門(mén)以上的課程的學(xué)生學(xué)號(hào)

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

查詢(xún)選修了課程的學(xué)生姓名(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語(yǔ)法

表本身能支持ACID

3. 可視化客戶(hù)端工具

DBeave


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

1. join優(yōu)化

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

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

(1)key分布不均勻

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

(3)建表時(shí)考慮不周

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

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

3. 合并小文件

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

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

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

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

4. 排序優(yōu)化

Order by  對(duì)查詢(xún)結(jié)果進(jìn)行全局排序,消耗時(shí)間長(zhǎng)

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


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


END


更多精彩干貨分享

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

IT那活兒

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/129846.html

相關(guān)文章

  • SparkSQL 在有贊的實(shí)踐

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

    hzx 評(píng)論0 收藏0
  • SparkSQL 在有贊的實(shí)踐

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

    Xufc 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<