Hive的安裝與MySQL結合

來源:互聯網
上載者:User

標籤:mysql   hive   

 #HIVE可以在任意節點搭建,實驗在master

連結:http://pan.baidu.com/s/1i4LCmAp 密碼:302x hadoop+hive下載

##原封不動的複製,必死無疑,請根據實際填寫相關參數和路徑

1、  Hive的基礎設施

a、基於已經搭建好的hadoop

b、下載hive版本,注意和hadoop對應起來

2、安裝hive

a、下載好的包解壓到/usr/local/命名為hive


tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /usr/local

cd /usr/local

mvapache-hive-1.2.1-bin hive

b、設定環境變數

vim/etc/profile

exportHIVE_HOME=/usr/local/hive

exportHIVE_CONF_DIR=/usr/local/conf

exportPATH=$PATH:$HIVE_HOME/bin

exportHIVE_LIB=$HIVE_HOME/lib

到此就可以啟動hive

[[email protected] ~]# hive

Logging initialized using configuration injar:file:/usr/local/hive/lib/hive-common-1.2.1.jar!/hive-log4j.properties

hive> show databases;

OK

default

Time taken: 1.096 seconds, Fetched: 1row(s)

預設情況下,Hive中繼資料儲存在內嵌的Derby 資料庫中,只能允許一個會話串連,只適合簡單的測試。為了支援多使用者多會話,則需要一個獨立的中繼資料庫,我們使用 MySQL 作為中繼資料庫,Hive 內部對 MySQL 提供了很好的支援。

二、使用MySQL儲存中繼資料

1、啟動mysql5.6版本(操作過程略)

2、配置hive檔案,設定檔在/usr/local/hive/conf/目錄下有.template的模板檔案,複製為hive-env.sh

[[email protected] conf]# cp hive-env.sh.templatehive-env.sh

[[email protected] conf]# vim hive-env.sh

##這裡的配置和/etc/profile重複,可以不配置,配置環境變數即可

1、環境變數

exportHADOOP_HEAPSIZE=1024

 HADOOP_HOME=/usr/local/hadoop

export HIVE_CONF_DIR=/usr/local/hive/conf

export HIVE_AUX_JARS_PATH=/usr/local/hive/lib

2、複製一個從模版檔案複製一個hive-site.xml的檔案

cp /usr/local/hive/conf/hive-default.xml.template ./hive-site.xml

通過name標籤裡的值找到value,修改值,設定檔下載:

http://down.51cto.com/data/2260702

##原封不動的複製,必死無疑,請根據實際填寫相關參數和路徑,標記紅色的注意修改自己的實際

 <name>hive.metastore.warehouse.dir</name>

      <value>/home/hive/warehouse</value>

              <name>javax.jdo.option.ConnectionURL</name>

       <value>jdbc:mysql://192.168.1.108:3306/hive?characterEncoding=UTF-8</value>

                   #需要在資料庫裡添加儲存中繼資料的庫

       <name>javax.jdo.option.ConnectionUserName</name>

       <value>hive</value>

       <name>javax.jdo.option.ConnectionPassword</name>

       <value>mysql</value>

##串連資料庫的使用者名稱和密碼,授權使用者名和密碼

   <name>hive.hwi.listen.port </name> 

   <value>9999</value> 

   <name>hive.exec.local.scratchdir</name>

   <value>/home/hive</value>

        <name>hive.downloaded.resources.dir</name>

    <value>/home/hive/tmp</value>

    <name>hive.querylog.location</name>

<value>/home/hive</value>

   配置輸出的日誌資訊

hive.log.dir=/home/hive

hive.log.file=hive.log

log4j.appender.EventCounter=org.apache.hadoop.log.metrics.EventCounter

3、  根據配置建立HIVE儲存資料的目錄

mkdir /home/hive/tmp –p

4、  配置jdbc連接器

1、下載包並解壓

2、拷貝mysql-connector-java-5.1.6-bin.jar 到hive 的lib下面

連結:http://pan.baidu.com/s/1qXIGeSG 密碼:iykt 下載包

cp mysql-connector-java-5.1.6-bin.jar /usr/local/hive/lib/

頁面提示

http://192.168.1.114:50070/explorer.html#/home提示這個需要修改

Permission denied: user=dr.who, access=READ_EXECUTE,inode="/home":root:supergroup:drwx-wx-wx

在vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml添加如下,後重啟

<property>

       <name>dfs.permissions.enabled</name>

       <value>false</value>

</property>

#配置完這些把namenode節點重啟生效

測試hive操作可以在mysql顯示及在HADOOP頁面也能展示出來

登陸hive

  1. 5.2建立內部表 
    內部表特點:資料載入到內部表中是,如果資料在本地會在將本機資料拷貝一份到內部LOCATION指定的目錄下,如果資料在hdfs上,則會將hdfs中的資料mv到內部表指定的LOCATION中。刪除內部表時,會刪除相應LOCATION下的資料。

create table neibu_table(id int); 

show tables #進行查看

hive在hdfs中的預設位置是/user/hive/warehouse,該位置可以修改,是由設定檔hive-site.xml中屬性hive.metastore.warehouse.dir決定的,會在/home/hive/warehouse/testdb.db下建立student目錄。 
通過瀏覽器可以查看

650) this.width=650;" src="http://s5.51cto.com/wyfs02/M02/8A/77/wKiom1gxNf7TD_jRAAB58m_Z4Co909.png" title="aa.png" alt="wKiom1gxNf7TD_jRAAB58m_Z4Co909.png" />

載入資料到表中方法:

##注意aa檔案的資料要先建立好

hive> LOAD DATA LOCAL INPATH ‘/home/aa‘INTO TABLE neibu_table;

Loading data to table default.neibu_table

Table default.neibu_table stats: [numFiles=1, totalSize=10]

OK

Time taken: 0.639 seconds

Select * from neibu_table

使用select* 不加條件時,不執行MapReduce,執行比較快;最後一行顯示的是null,原因是檔案中有一行空格;

注意:內部表會將資料拷貝一份到表目錄下面,如果刪除內部表中繼資料,那麼該中繼資料下面的資料也會被刪除;

第二種載入資料到student中的方法 
注意bb.txt檔案的路徑,並寫入一列數字; 
執行命令hadoop fs -put bb.txt /home/hive/warehouse/neibu_table或者 hdfsdfs -put  t /home/hive/warehouse/neibu_table 

添加一個庫:create database hive20161120

建立表a20161120,有多個列的情況建立表,指定分隔字元為\t 

建立分區表:

CREATE TABLE fenqu(id int) PARTITIONED BY (d int);

LOAD DATA LOCAL INPATH ‘bb.txt INTO TABLE fenquPARTITION (d=1); 
LOAD DATA LOCAL INPATH ‘bb2.txt‘ INTO TABLE fenquPARTITION (d=2); 

  1. 8. 桶表 
    (表串連時候使用,根據桶的個數進行模數運算,將不同的資料放到不同的桶中) 
    建立桶類型的表 
    create table student4(id int) clustered by(id)into 4 buckets; 
    必須啟用桶表 
    set hive.enforce.bucketing = true; 
    插入資料,這裡並沒有使用load,而是用的insert,insert載入資料使用了mapreduce。 
    insert into table student4 select id fromstudent3; 

在hive 添加的表可以在mysql查看他的中繼資料資訊,在配置問建立定義的庫下記錄所有所有相關的記錄

Eg:select * from TBLS;


本文出自 “DBSpace” 部落格,請務必保留此出處http://dbspace.blog.51cto.com/6873717/1874753

Hive的安裝與MySQL結合

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.