1. 程式人生 > >Hive實戰(2)Hive安裝教程

Hive實戰(2)Hive安裝教程

選擇Hadoop發行版本

這裡寫圖片描述

安裝java

$  /usr/java/latest/bin/java -version 
java version "1.6.0_23" 
Java(TM) SE Runtime Environment (build 1.6.0_23-b05) 
Java HotSpot(TM) 64-Bit Server VM (build 19.0-b09, mixed mode) 
$ sudo echo "export JAVA_HOME=/usr/java/latest" > /etc/profile. d/java. sh $ sudo echo "PATH= $ PATH: $ JAVA_HOME/bin"
» /etc/profile. d/java. sh $ . /etc/profile $ echo $ JAVAHOME /usr/java/latest

安裝Hadoop

$ wget \ 
http://www.us.apache.org/dist/hadoop/common/hadoop-0.20.2/hadoop-0.20. 2.tar.gz 
$ tar -xzf hadoop-0.20.2.tar.gz 
$ sudo echo "export HADOOP_HOME=$PWD/hadoop-0.20.2" > /etc/profile.d/ hadoop.sh 
$ sudo echo "PATH=$PATH: $HADOOP_HOME/bin"
» /etc/profile.d/hadoop.sh $ . /etc/profile

選擇本地模式 並測試Hadoop

$ mkdir wc-in 
$ echo "bla bla" > wc-in/a.txt 
$ echo "bla wa wa " > wc-in/b.txt
$ hadoop jar $HADOOP_HOME/hadoop-0.20.2-examples.jar wordcount wc-in 
wc-out
$ ls wc-out/*
$ cat wc-out/*
$ hadoop dfs -cat wc-out/*

安裝Hive

$ curl -o http:
//archive.apache.org/dist/hive/hive-0.9.0/hive-0.9.0-bin. tar.gz $ tar -xzf hive-0.9.0.tar.gz $ sudo mkdir -p /user/hive/warehouse $ sudo chmod a+rwx /user/hive/warehouse

Hive檔案說明

$HIVE_HOME/lib 目錄下可以發現有眾多的JAR 檔案 
$HIVE_HOME/bin目錄下包含可以執行各種各樣Hive服務的可執行檔案
$HIVE_HOME/conf目錄下存放了配置Hive的配置檔案

Thrift服務提供了可遠端訪問其他程序的功能,也提供使用 JDBC和ODBC訪問Hive的功能。
metastoreservice (元資料服務),Hive使用這個服務來 儲存表模式資訊和其他元資料資訊。

啟動Hive

$ Cd $ HIVE_HOME 
$ bin/hive 
Hive history file=/tmp/myname/hive_job_log_myname_201201271126_1992326118. txt 

hive> CREATE TABLE x (a INT); 

hive> SELECT * FROM x; 

hive> SELECT * FROM x; 

hive> DROP TABLE x; 

hive> exit;

hadoop本地模式配置

這裡寫圖片描述

例2-1 本地模式下的hive-site, xml配置檔案。 
<?xml version="l.0"?> 
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?> 
<configuration> 
<property> 
<name>hive.metastore.warehouse.dir</name> 
<value>/home/me/hive/warehouse</value> 
〈description〉 
Local or HDFS directory where Hive keeps table contents. 
〈/description〉 
</property> 
<property> 
<name>hive.metastore.local</name> 
<value>true</value> 
〈description〉 
Use false if a production metastore server is used. 
〈/description〉 
</property> 
<property> 
<name>j avax.jdo.option.ConnectionURL</name> 
<value>jdbc:derby:;databaseName=/home/me/hive/metastore_db;create=tru e</value> 
〈description〉
The JDBC connection URL. 
</description〉 
</property> 
〈/configuration〉

hadoop偽分散式,叢集模式

這裡寫圖片描述

JDBC連線metastore元資料配置

例2-2 hive-site.xml中的元資料儲存資料庫配置。 
<?xml version="l.0"?> 
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?> 
〈configuration〉 
<property> 
<name>javax.jdo.option.ConnectionURL</name> 
<value>j dbc:mysql://dbl.mydomain.pvt/hive_db?createDatabaseIfNotExist =true</value> 
</property> 
<property> 
<name>javax.jdo.option.ConnectionDriverName</name> 
<value>com.mysql.jdbc.Driver</value> 
</property> 
<property> 
<name>j avax.jdo.option.ConnectionUserName</name> 
<value>database_user</value> 
</property> 
<property>
<name>j avax.jdo.option.ConnectionPassword</name> 
<value>database_pass</value> 
</property> 
〈/configuration〉

Hive命令

$ bin/hive --help

這裡寫圖片描述

Hive命令列介面

hive --help --service cli

$ hive -e "SELECT * FROM mytable LIMIT 3"#執行結束後hive CLI立 即退出

$ cat /path/to/file/withqueries.hql 
SELECT x.* FROM src x; 
$ hive 
hive> source /path/to/file/withqueries.hql;
#從檔案中執行查詢

$ echo "one row" > /tmp/myfile 
$ hive -e "LOAD DATA LOCAL INPATH '/tmp/myfile1 INTO TABLE src;
#至少有一行的資料在源表裡面

#使用Tab鍵自動補全

hive> ! pwd; 
/home/me/hiveplay
#使用!和;開頭結尾來切換bash shell指令碼


hive> dfs -ls / ;
#執行Hadoop的dfs命令,只需要將hadoop命令中的關鍵字 hadoop去掉,然後以分號結尾就可以了

--開頭的字串來表示註釋

#顯示欄位名稱
hive> set hive.cli.print.header=true; 
hive> SELECT * FROM system—logs LIMIT 3;

這裡寫圖片描述