CIS 612 SUNNIE HUNG - cis.csuohio.educis.csuohio.edu/~sschung/cis612/LectureNotes_Hive_Final.pdf ·...

36
APACHE HIVE CIS 612 SUNNIE CHUNG

Transcript of CIS 612 SUNNIE HUNG - cis.csuohio.educis.csuohio.edu/~sschung/cis612/LectureNotes_Hive_Final.pdf ·...

APACHE HIVE

CIS 612

SUNNIE CHUNG

APACHE HIVE IS

� Data warehouse infrastructure built on top of

Hadoop enabling data summarization and ad-hoc

queries.

� Initially developed by Facebook.

� Hive stores data in Hadoop Distributed File

System

� Supports SQL like Query Language : HiveQL

� Hive complied Hive Query Language statements

are broken down by the Hive service into

MapReduce jobs and executed across a Hadoop

cluster.

Sunnie Chung CIS 612 Lectu

re Notes

2

HOW HIVE WORKS ?

� Hive structures data into well-understood

database concepts such as tables, rows, columns,

and partitions.

� It supports primitive types, as well as Associative

Arrays, Lists, Struct.

� HQL supports DDL and DML.

� HQL has limited equality and join predicates,

and has no inserts on existing tables. (It can

override tables)

� Users can embed Custom Map-Reduce scripts.

Sunnie Chung CIS 612 Lectu

re Notes

3

HIVE

� Data in Hive is organized into Tables

� Provides structure for unstructured Big Data

� Work with data inside HDFS

� Tables

� Data : File or Group of Files in HDFS

� Schema : In the form of metadata stored in Relational Database

� Have a corresponding HDFS directory

� Data in a table is Serialized

� Supports Primitive Column Types and Nestable

Collection Types: Array and Map(Key Value pair)

Sunnie Chung CIS 612 Lectu

re Notes

4

HIVE DATABASE

� Data Model

� Tables� Analogous to tables in relational database

� Each table has a corresponding HDFS directory

� Hive provides built-in serialization formats which exploit compression and lazy-serialization

� Partitions� Each table can have one or more partitions (Horizontal Partitions)

� Example:

Table T in the directory : /wh/T.

If Tis partitioned on columns ds = ‘20090101’, and ctry = ‘US’, will be

stored /wh/T/ds=20090101/ctry=US.

� Buckets� Data in each partition may in turn be divided into buckets based on the hash of a column in the table

� Each bucket is stored as a file in the partition directory

TABLE SCHEMA EXAMPLE

6

Sunnie Chung CIS 612 Lectu

re Notes

CREATE TABLE page_view(viewTime INT, userid BIGINT,

page_url STRING, referrer_url STRING,

friends ARRAY<BIGINT>, properties MAP<STRING, STRING>

ip STRING COMMENT 'IP Address of the User')

COMMENT 'This is the page view table'

PARTITIONED BY(dt STRING, country STRING)

CLUSTERED BY(userid) SORTED BY(viewTime) INTO 32 BUCKETS

ROW FORMAT DELIMITED

FIELDS TERMINATED BY '1'

COLLECTION ITEMS TERMINATED BY '2'

MAP KEYS TERMINATED BY '3'

STORED AS SEQUENCEFILE;

HIVE QUERY LANGUAGE

� SQL like language: HiveQL

� DDL : to create tables with specific serialization

formats

� DML : load and insert to load data from external

sources and insert query results into Hive tables

� Do not support updating and deleting rows in

existing tables

� Supports Multi-Table insert

� Supports Select, Project, Join, Aggregate,

� Supports Union all and Sub-queries in the From

clause

Sunnie Chung CIS 612 Lectu

re Notes

7

HIVEQL: UDTF, UDAF

� Can be extended with custom functions (UDFs)

� User Defined Transformation Function(UDTF)https://cwiki.apache.org/confluence/display/Hive/DeveloperGuide+UDTF

� User Defined Aggregation Function (UDAF)

� Users can embed custom map-reduce scripts written in

any language using a simple row-based streaming

interface

WHAT HIVE DOES ?

� Hive allows SQL developers to write Hive Query

Language (HQL) statements that are similar to

SQL statements, but with limited in the

commands.

� It therefore allows developers to explore and

structure massive amounts of data, analyze it

then turn into business insight.

� Hive queries have very high latency because it is

based on Hadoop.

� Hive is read-based and not appropriate for write

operation.

Sunnie Chung CIS 612 Lectu

re Notes

9

HIVEQL

� Running time example: Status Meme

When Facebook

users update their

status, the updates

are logged into flat

files in an NFS

directory

/logs/status_updates

Compute daily

statistics on the

frequency of status

updates based on

gender and school

ADVANTAGES OF HIVE

� Familiar: hundreds of unique users can simultaneously query the data using a language familiar to SQL users.

� Fast Response: times are typically much faster than other types of queries on the same type of huge datasets.

� Scalable and extensible: as data variety and volume grows, more commodity machines can be added to the cluster, without a corresponding reduction in performance.

� Informative Familiar JDBC and ODBC drivers: allow many applications to pull Hive data for seamless reporting. Hive allows users to read data in arbitrary formats, using SerDes and Input/Output formats. (SerDes: serialized and deserialized API is used to move data in and out of tables)

Sunnie Chung CIS 612 Lectu

re Notes

11

� External Interfaces:

� Web UI : Management

� Hive CLI : Run Queries, Browse Tables, etc

� API : JDBC, ODBC

� Metastore : � System catalog which contains metadata about Hive tables

� Driver : � manages the life cycle of a Hive-QL statement during compilation,

optimization and execution

� Compiler : � translates Hive-QL statement into a plan which consists of a DAG of

map-reduce jobs

� Database: is a namespace for tables

� Table: metadata for table contains list of columns and their types, owner, storage and SerDe information. Also contains any user supplied key and value data.

� Partition: each partition can have it own columns and SerDe and storage information.

HIVE ARCHITECTURESunnie Chung CIS 612 Lectu

re Notes

12

HIVE ARCHITECTURE

Sunnie Chung CIS 612 Lectu

re Notes

13

HIVE ARCHITECTURE

Sunnie Chung CIS 612 Lectu

re Notes

14

HIVE ARCHITECTURE

Figure 1: Hive Architecture

External interface:

Both user interface

like command line

(cli)

and web UI

Thrift is a framework

for cross-language

services, where a

server written in one

language (like Java)

can also support

clients in other

languages.

Metastore is the system

catalog. All other

components of Hive

interact with metastore

The Driver manages the

life cycle (statistics) of a

HiveQL statement

during compilation,

optimization and

execution

COMMAND LINE INTERFACE

� There are several ways to interact with Hive, including some popular graphical user interface but CLI is sometimes preferable. CLI allows creating, inspecting schema and query tables, etc.

� All commands and queries go to the Driver, which complies, optimizes and executes queries usually with MapReduce jobs.

� Hive doesn’t generate MapReduce programs, it uses generic Mapper and Reducer modules. Hive communicates with Job Tracker to initiate the MapReduce job.

� Data files to be processed are usually in HDFS, managed by NameNode.

� Hive uses Hive Query Language HQL, which is similar to SQL.

Sunnie Chung CIS 612 Lectu

re Notes

16

HIVE ARCHITECTURE

� MetaStore

� The system catalog which contains metadata about the

tables stored in Hive

� This data is specified during table creation and reused very

time the table is referenced in HiveQL

� Contains the following objects:

� database : the namespace for tables

� table : metadata for table contains list of columns

and their types, owners, storage and SerDe

information

�Partition: each partition can have its own columns

and SerDe and storage information

Top

Bottom

Figure 2: Query plan with 3 map-reduce

jobs for multi-table insert query

HIVE ARCHITECTURE

HIVE ARCHITECTURE

� Compile

� The compiler converts the string(DDL/DML/query statement)

to a plan.

� The parser transforms a query string to a parse tree

representation

� The semantic analyzer transforms the parse tree to a block-based

internal query representation

� The logical plan generator converts the internal query

representation to a logical plan

� The optimizer performs multiple passes over the logical plan and

rewrites it in several ways

� Combined multiple joins which share the join key into a single multi-

way join, and hence a single map-reduce job

� adds repartition operators

� Prunes columns early and pushes predicates closer to the table scan

operators

HIVE ARCHITECTURE

� Compile (continue..)� The optimizer performs multiple passes over the logical plan and rewrites it in several ways

� Combined multiple joins which share the join key into a single multi-way join, and hence a single map-reduce job

� adds repartition operators

� Prunes columns early and pushes predicates closer to the table scan operators

� In case of partitioned tables, prunes partitions that are not needed by the query

� In case of sampling queries, prunes buckets that are not needed

Users can also provide hints to the optimizer to

� Add partial aggregation operators to handle large cardinality grouped aggregation

� Add repartition operators to handle skew in grouped aggregations

� Perform joins in the map phrase instead of the reduce phase

� The Physical Plan generator converts the logical plan into physical plan, consisting a directed-acyclic graph(DAG)of map-reproduce jobs

INPUT DATA

� Hive has no row-level insert, update or delete operations. The only way to put data into a table is to use one of load operations.

� There are four file formats supported in Hive, which are TEXTFILE, SEQUENCEFILE, ORC and RCFILE.

� Example: ’NASDAQ_daily_prices_B.csv’ a log file of stocks record of NASDAQ.

� exchange,stock_symbol,date,stock_price_open,stock_price_high,stock_price_low,stock_price_close,stock_volume,stock_price_adj_close

� NASDAQ,BBND,2010-02-08,2.92,2.98,2.86,2.96,483800,2.96

� NASDAQ,BBND,2010-02-05,2.85,2.94,2.79,2.93,884000,2.93

� NASDAQ,BBND,2010-02-04,2.83,2.88,2.78,2.83,1333300,2.83

….

Sunnie Chung CIS 612 Lectu

re Notes

21

CREATE TABLE TO HOLD THE DATA:

hive> CREATE TABLE IF NOT EXISTS stocks (

exchange STRING,

symbol STRING,

ymd STRING,

price_open FLOAT,

price_high FLOAT,

price_low FLOAT,

price_close FLOAT,

volume INT,

price_adj_close FLOAT)

ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';

Sunnie Chung CIS 612 Lectu

re Notes

22

HIVE QUERY LANGUAGE: HIVEQL

� Create a database:

hive> CREATE DATABASE financials;

or

hive> CREATE DATABASE IF NOT EXISTS financials;

� Describe table:

hive> DESCRIBE DATABASE financials;

OK

Financialshdfs://localhost:54310/user/hive/warehouse/financials.db

� Use database:

hive> USE financials;

� Drop database:

hive> DROP DATABASE IF EXISTS financials;

Sunnie Chung CIS 612 Lectu

re Notes

23

HOW TO LOAD DATA INTO HIVE TABLE

� Use LOAD DATA to import data into a Hive table

� Hive>Load Data LOCAL INPATH '/home/sunny/EmployeeDetails.txt ' INTO TABLE Employee

� Use the word OVERWRITE to write over a file of the same name

� We can Load data from Local file system by using LOCAL keyword as above Example

� Inserting Data into new table by using SELECT statement

� For Example, INSERT OVERWRITE <table_name> SELECT * FROM Employee

24

Sunnie Chung CIS 612 Lectu

re Notes

MANAGING TABLES

Operation Command Syntax

See current tables Hive>Show TABLES

Check the table name Hive>Describe <Table_Name>

Change the table name Hive>Alter Table <table_Name>

Rename to mytab

Add a column Hive> Alter Table <table_Name> ADD

COLUMNS (MyID String)

Drop a partition Hive>Alter Table <table_Name>

DROP PARTITION (Age>70)

25

Sunnie Chung CIS 612 Lectu

re Notes

HIVE SUPPORTS THE FOLLOWINGS:

� WHERE Clause

� UNION All and DISTINCT

� GROUP BY and HAVING

� LIMIT Clause

� Hive Supports Sub-Queries but only in FROM

Clause

� JOINS , ORDER BY, SORT BY

26

Sunnie Chung CIS 612 Lectu

re Notes

OUTPUT DATA

� Output data produced by Hive is structured,

typically stored in a relational database.

� For cluster, MySQL or similar relational

database is required.

� The result tables then can be manipulated using

HiveQL in the similar way of SQL to relational

database.

Sunnie Chung CIS 612 Lectu

re Notes

27

LOAD FILE INTO TABLE:

hive> LOAD DATA LOCAL INPATH '/Users/nqt289/Desktop/NASDAQ_daily_prices_B.csv'

> OVERWRITE INTO TABLE stocks;

Copying data from file:/Users/nqt289/Desktop/NASDAQ_daily_prices_B.csv

Copying file: file:/Users/nqt289/Desktop/NASDAQ_daily_prices_B.csv

Loading data to table mydb.stocks

Deleted hdfs://localhost:54310/Users/nqt289/Desktop/NASDAQ_daily_prices_B.csv

OK

Time taken: 0.231 seconds

Sunnie Chung CIS 612 Lectu

re Notes

28

EXAMPLE OF OUTPUT OF HIVE

hive> SELECT * FROM STOCKS WHERE price_open='2.92';

Total MapReduce jobs = 1

Launching Job 1 out of 1

Number of reduce tasks is set to 0 since there's no reduce operator

Starting Job = job_201403311509_0003, Tracking URL = http://localhost:50030/jobdetails.jsp?jobid=job_201403311509_0003

Kill Command = /Users/nqt289/hadoop-0.20.2/bin/../bin/hadoop job -Dmapred.job.tracker=localhost:54311 -kill job_201403311509_0003

Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 0

2014-03-31 15:39:20,577 Stage-1 map = 0%, reduce = 0%

2014-03-31 15:39:23,597 Stage-1 map = 100%, reduce = 0%

2014-03-31 15:39:26,625 Stage-1 map = 100%, reduce = 100%

Ended Job = job_201403311509_0003

MapReduce Jobs Launched:

Job 0: Map: 1 HDFS Read: 21998523 HDFS Write: 5166 SUCCESS

Total MapReduce CPU Time Spent: 0 msec

OK

NASDAQ BBND 2010-02-08 2.92 2.98 2.86 2.96 4838002.96

NASDAQ BTFG 2009-12-21 2.92 2.92 2.75 2.79 151002.79

NASDAQ BJCT 2004-04-21 2.92 2.98 2.9 2.98 32002.98

NASDAQ BJCT 2004-04-20 2.92 3.0 2.92 2.95 279002.95

Time taken: 12.785 seconds

Sunnie Chung CIS 612 Lectu

re Notes

29

DEFINITION: ACID

� Atomicity

� Atomicity requires that each transaction be "all or nothing": if one part of the transaction fails, the entire transaction fails, and the database state is left unchanged. An atomic system must guarantee atomicity in each and every situation, including power failures, errors, and crashes. To the outside world, a committed transaction appears (by its effects on the database) to be indivisible ("atomic"), and an aborted transaction does not happen.

� Consistency

� The consistency property ensures that any transaction will bring the database from one valid state to another. Any data written to the database must be valid according to all defined rules, including constraints, cascades, triggers, and any combination thereof. This does not guarantee correctness of the transaction in all ways the application programmer might have wanted (that is the responsibility of application-level code) but merely that any programming errors cannot result in the violation of any defined rules.

� Isolation

� The isolation property ensures that the concurrent execution of transactions result in a system state that would be obtained if transactions were executed serially, i.e. one after the other. Providing isolation is the main goal of concurrency control. Depending on concurrency control method, the effects of an incomplete transaction might not even be visible to another transaction.[citation needed]

� Durability

� Durability means that once a transaction has been committed, it will remain so, even in the event of power loss, crashes, or errors. In a relational database, for instance, once a group of SQL statements execute, the results need to be stored permanently (even if the database crashes immediately thereafter). To defend against power loss, transactions (or their effects) must be recorded in a non-volatile memory. 30

Sunnie Chung CIS 612 Lectu

re Notes

ACID IN HIVE

� ACID for Hive is added manually with the use

cases:

� A set of Inserts and Updates is processed once an

hour.

� A set of Deletes is processed once a day.

� A log of transactions is exported from a RDBMS

to reflect new data once an hour.

� The delay is not an important issue here due to

the purpose of Hive, also the number of

transactions committed each time is huge (100 to

500 thousands rows.)31

Sunnie Chung CIS 612 Lectu

re Notes

HIVE ACHIEVEMENTS & FUTURE PLANS

� First step to provide warehousing layer for

Hadoop(Web-based Map-Reduce data processing

system)

� Accepts only sub-set of SQL: Working to subsume

SQL syntax

� Working on Rule-based optimizer : Plans to build

Cost-based optimizer

� Enhancing JDBC and ODBC drivers for making

the interactions with commercial BI tools.

� Working on making it perform better

Sunnie Chung CIS 612 Lectu

re Notes

32

PROJECTS & TOOLS ON HADOOP

� HBase

� Hive

� Pig

� Jaql

� ZooKeeper

� AVRO

� UIMA

� Sqoop

Sunnie Chung CIS 612 Lectu

re Notes

33

HIVE TUTORIAL

https://cwiki.apache.org/confluence/display/Hive/Tutorial#Tutorial-HiveTutorial

34

Sunnie Chung CIS 612 Lectu

re Notes

REFERENCES

[1] "Apache Hadoop", http://hadoop.apache.org/Hadoop/

[2] “Apache Hive”, http://hive.apache.org/hive

[3] “Apache HBase”, https://hbase.apache.org/hbase

[4] “Apache ZooKeeper”, http://zookeeper.apache.org/zookeeper

[5] Jason Venner, "Pro Hadoop", Apress Books, 2009

[6] "Hadoop Wiki", http://wiki.apache.org/hadoop/

[7] Jiong Xie, Shu Yin, Xiaojun Ruan, Zhiyang Ding, Yun Tian, James Majors, Adam Manzanares, Xiao Qin, " Improving MapReduce Performance through Data Placement in Heterogeneous Hadoop Clusters", 19th International Heterogeneity in Computing Workshop, Atlanta, Georgia, April 2010

Sunnie Chung CIS 612 Lectu

re Notes

35

[8]Dhruba Borthakur, The Hadoop Distributed File System:

Architecture and Design, The Apache Software Foundation 2007.

[9] "Apache Hadoop",

http://en.wikipedia.org/wiki/Apache_Hadoop

[10] "Hadoop Overview",

http://www.revelytix.com/?q=content/hadoop-overview

[11] Konstantin Shvachko, Hairong Kuang, Sanjay Radia,

Robert Chansler, The Hadoop Distributed File System,

Yahoo!, Sunnyvale, California USA, Published in: Mass

Storage Systems and Technologies (MSST), 2010 IEEE

26th Symposium.

REFERENCESSunnie Chung CIS 612 Lectu

re Notes

36