Apache Hive란무엇입니까?

Apache Hive는광범위한Hadoop에코시스템에속하는Apache Hadoop分布式文件系统(HDFS)에서추출한대용량데이터세트를읽고,쓰고,관리하도록설계된오픈소스데이터웨어하우스소프트웨어입니다。

Apache蜂巢는광범위한Apache蜂巢문서및지속적업데이트를통해쉽게액세스할수있는방식으로계속해서데이터처리를혁신합니다。

Apache Hive의역사

Apache蜂巢는Joydeep森Sarma와阿施施Thusoo Facebook가에근무하던시절에함께구상하고만들어낸오픈소스프로젝트입니다。蜂巢Apache하는둡의하위프로젝트로시작했지만,결과적으로는그자체로최상위프로젝트지위를얻게되었습니다。하둡과MapReduce작업은제한이점점심해지고,데이터크기는점점커져2006년에는매일몇십GB수준이었지만겨우몇년만에일일1 tb에서로15结核病늘어났습니다。Facebook엔지니어로서는복잡한작업을간편하게실행할수없었고,이때문에蜂巢가탄생하게된것입니다。

Apache Hive는두가지목` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `SQL기하나는반선언언어로서SQL로는부족할때엔지니어가자체적으로스크립트와프로그램을플러그인할수있게허용하기도하는것인데,이때문에엔지니어링업계(SQL技能기반)대부분이다른언어에비해극히적은수준의타격이발생하고재교육도별로필요없이蜂巢를사용할수있습니다。

둘째,蜂巢는조직내모든데이터세트를중앙집중화한메타데이터스토어(하둡기반)를제공했습니다。Facebook Apache蜂巢는처음에는내부에서개발되었지만,Netflix와같은다른기업에서도사용하고개발되고있는프로젝트입니다。亚马逊에서도亚马逊网络服务의亚马逊弹性MapReduce에서Apache Hive소프트웨어분기를유지관리하고있습니다。

Hive의기능은어떤것이있습니까

Apache Hive는하둡의HDFS는물론이와호환되는파일시스템(예:Amazon S3, Azure Blob Storage, Azure数据湖存储,谷歌云存储및Alluxio등)에보관된대규모데이터세트분석을지원합니다。

SQL과유사한쿼리언어인HiveQL를제공하는데,여기에읽기스키마(schema-on-read)가포함되어있어쿼리를Apache火花, MapReduce, Apache Tez작업으로명하게변환합니다。이외에蜂巢의다른기능은다음과같습니다。

  • Hive Data函数는대규모데이터세트의처리와쿼리에도움을제공합니다。이런함수가제공하는기능중에는문자열조작,날짜조작,타입변환,조건연산,자수학적함수등이있으며이외에도여러가지가있습니다。
  • 관계형데이터베이스관리시스템내의메타데이터스토리지입니다。
  • 拼花RCFile,일반텍스트,HBase,兽人및이외에도다른여러가지스토리지유형이있습니다。
  • 알고리즘을사용해하둡에코시스템에저장된압축데이터작업
  • 데이터,문자열및기타데이터마이닝툴을조작하는기본내장사용자정의함수(内置的用户定义函数,UDF)입니다。蜂巢는UDF세트확장을지원하여기본내장함수로는지원되지않는사용사례를처리합니다。
  • SQL과유사한쿼리는MapReduce나特斯(HiveQL),또는火花작업으로묵시적으로변환됩니다。

Apache Hive아키텍처및주Apache Hive구성소

Apache Hive아키텍처의핵심구성HQL (Hive Query Language, HQL);外部Apache Hive Metastore, Hive Beeline Shell입니다。

Hive Server 2

蜂巢服务器2는사용자와애플리케이션에서보내는요청을수락하고,실행계획을생성한후,SQL쿼리를처리할纱작업을자동생성합니다。또한,이서버는蜂巢옵티마이저와蜂巢컴파일러를지원함으로써데이터추출과처리를간소화합니다。

Hive쿼리언어

Apache蜂巢SQL는연상코드를구현하도록지원하기때문에길게이어진JavaScript코드속에서비구조적데이터를분류할필요가없고,사용자는내장된HQL명령(HQL)을사용하여쿼리를보낼수있습니다。이러한명령은비용및시간면에서효율적인방식으로대규모데이터세트를탐색하고,결과를개량하고,데이터를공유하는데사용할수있습니다。

蜂巢Metastore

Apache蜂巢인프라의중앙리포지토리인메타스토어에모든蜂巢메타데이터가저장됩니다。메타스토어에서메타데이터는Hive테이블및파티션형식으로구성되어모든관계형데이터베이스에서데이터를비교할수있게됩니다。여기에는표이름,열이름,데이터유형,파티션정보,HDFS에서의데이터위치등이있습니다。

蜂巢直线壳

다른데이터베이스관리시스템(DBMS)과마찬가지로,蜂巢는사용자가HQL명령을실행할수있는명령줄인터페이스가내장되어있습니다。또한Hive shell도Hive JDBC및ODBC드라이버를실행하므로打开数据库连接또는Java数据库连接애플리케이션에서쿼리를실행할수있습니다。

Apache Hive소프트웨어의작동원리

蜂巢服务器2는사용자와애플리케이션에서보내는요청을수락한다음,실행계획을생성하고SQL쿼리를처리하기위한纱작업을자동생성합니다。이纱작업은MapReduce,特斯나火花워크로드로생성할수있습니다。

그런다음,이작업은하둡에서분산형애플리케이션으로작동합니다。SQL쿼리가처리되고나면그결과는최종사용자나애플리케이션에반환되거나,HDFS로전송됩니다。

그러면蜂巢Metastore가Postgres、MySQL과같은관계형데이터베이스를활용하여이메타데이터를유지하고蜂巢服务器2가쿼리계획에서테이블구조를가져옵니다。경우에따라서애플리케이션이기본처리과정에서메타스토어를검색할수도있습니다。

그런다음,蜂巢워크로드를하둡리소스관리자인纱에서실행하여하둡작업을실행할수있는처리환경을제공합니다。이처리환경은할당된메모리,그리고하둡클러스터의다양한작업자노CPU드로구성되어있습니다。

纱은HDFS메타데이터정보를활용하여필요한데이터가저장된곳에서처리하려고시도합니다。MapReduce를적용한特斯,火花,蜂巢는SQL쿼리용코드를MapReduce,特斯,火花작업으로자동생성할수있습니다。

蜂巢는최근들어서야MapReduce를활용하기시작했지만,대부분Cloudera하배포에서는MapReduce나때로는火花를사용하도록蜂巢를구성합니다。Hortonworks(HDP)배포의경우보통Tez를실행엔진으로설정합니다。

Apache Hive가사용한5가지데이터유형은무엇입니까?

Apache蜂巢는일괄처리를통해빠른속도로페타바이트규모데이터를효율적으로추출하고분석할수있어데이터처리뿐만아니라즉석쿼리를실행하는데도이상적입니다。

Apache蜂巢데이터유형은숫자,날짜/시간,문자열,복합,기타,이렇게5가지로구성됩니다。

숫자데이터유형

이름에서알수있듯이,이러한데이터유형은정수를기반으로합니다。예를들어的非常小的整数”、“短整型”,“INT”的BIGINT등의유형이있습니다。

날짜/시간데이터유형

이러한데이터유형을사용하면사용자가입력값으로허용되는“时间戳”,“日期”“间隔”로시간및날짜를입력할수있습니다。

문자열데이터유형

이유형의데이터는매우단순글로작성된텍스트또는'문자열”을처리를위한데이터로구현할수있습니다。문자열데이터유형에는' string, ' varchar, ' char '가포함됩니다。

복합데이터유형

가장발전된데이터유형중하나인복합유형은보다복잡한데이터를기록하고“结构”、“地图,”“数组”“联盟”과같은유형으로구성됩니다。

기타 유형

이네가지카테고리에속하지않는데이터유형은기타데이터유형이라고하며,“布尔,”“二进制”등의입력값을받을수있습니다。

Hive Apache에서Map加入의작동원리

Apache蜂巢에서地图加入은데이터처리의使用映射-规约模式단계를우회하면서두테이블의데이터를결합하여,또는'조인'함으로써쿼리속도와효율을높이는데사용하는기능입니다。

관계형데이터베이스관리시스템(RDBMS)은무엇이고Apache蜂巢에서는어떻게사용합니까?

관계형데이터베이스관리시스템(RDBMS)은행이나열기반테이블구조로메타데이터를저장하여작동하는데이터베이스모델이며,서로다른데이터세트를연결하고비교할수있습니다。

Apache蜂巢는RDBMS를사용하여모든데이터를안전하고(안정적이면서도정확하게저장하고처리합니다。역할기반보안과암호화된통신등의기능으로적절한사람에게만추출된정보에대한액세스권한을부여하도록하기때문입니다。

Apache Hive와기존RDBMS의차이는무엇입니까?

Apache Hive와RDBMS는몇가지핵심적차이가있습니다。

  • RDBMS기능은읽기,쓰기작업을여러번처리하지만,蜂巢는쓰기에는한번,읽기에는여러번작업합니다。
  • 蜂巢는읽기스키마(schema-on-read)규칙을따르는데,데이터검증이나검사,파싱은존재하지않고파일을복사/이동할뿐입니다。기존데이터베이스의경우,표에스키마를적용하면이것이쓰기규칙에스키마를적용합니다。
  • 蜂巢는하둡기반이기때문에다른RDBMS와는달리하둡과MapReduce와같은제한사항을준수해야합니다。

Apache Hive vs Apache Spark

다양한데이터세트에서대량의데이터를처리하도록설계된분석프레임워크인Apache火花는R에서Python까지다양한언어를지원할수있는강력한사용자인터페이스를제공합니다。

蜂巢는HiveQL이라는SQL인터페이스를사용하여퀄하고분석할행,열,데이터유형이있는표로데이터를표시하는추상화계층을제공합니다。Apache Hive는Hive LLAP와함께酸트랜잭션을지원합니다。트랜잭션은다중사용자/프로세스에서생성,읽,기업데이트,삭제(CRUID)작업을위해동시에액세스하는환경에서데이터의일관된보기를보장합니다。

数据库는ACID트랜잭션을보장한다는점에서Hive LLAP와유사한三角洲湖를제공하지만,데이터처리시성능과정성에도움이되는여러가지장점이있습니다。火花SQL은행열,데이터유형이있는표로구조화된데이터를표시하는Apache火花의인터랙팅모듈입니다。

火花SQL은SQL 2003규정을준수하고Apache火花를데이터처리에분배엔진으로사용합니다。火花SQL인터페이스와더불어DataFrames API를Java, Scala, Python, HiveQL과유사한r .火花SQL을사용하는데이터와상호작용하는데사용할수있습니다。

둘다ANSI SQL구문을사용하며蜂巢함수의대부분은砖에서실행됩니다。여기에는날짜/시간변환및파싱,컬렉션,문자열조작,수학적연산,조건함수등蜂巢함수가포함됩니다。

火花SQL에맞게변환하는데필요하거나砖SQL에의火花존재하지않는蜂巢에특정된일부함수도있습니다。砖의火花SQL로작업하는모든HiveQL ANSI SQL구문을기대할수있습니다。

여기에는ANSI SQL집계및분석함수가포함됩니다。蜂巢는优化排柱状(兽人)파일형식에최적화되어있으며铺도지원합니다。砖는铺과三角洲에최적화되어있지만,兽人도지원합니다。파일형식으로오픈소스拼花을사용하는德尔塔사용을언제나권장합니다。

Apache Hive vs. Presto

원래Facebook에서만든PrestoDB는转眼间라고더많이알려져있는데,사용자가빠른속도로페타바이트의데이터를처리하고분석할수있는분산형SQL쿼리엔진입니다。转眼间의인프라는MySQL, Teradata에서부터MongoDB,卡桑德拉에이르기까지관계형데이터베이스및비관계형데이터베이스의통합을모두지원합니다。

额外的资源

回到术语表