Hadoop之Hive本地與遠端mysql資料庫管理模式安裝手冊

格伯納發表於2018-10-30

一、環境描述

Mysql版本:mysql-installer-community-5.5.27.1   32

Mysql  for  Windows 7  32位:我把mysql資料庫安裝在了自己win7的筆記本上,這樣的好處就是減少了虛擬機器 master  slave的開銷和使用空間還可以多利用一臺機器的資源,如果你的虛擬機器資源很緊張的話也可以這樣部署。

Linux ISOCentOS-6.0-i386-bin-DVD.iso 32

JDK version"1.6.0_25-ea"

Hadoop software versionhadoop-0.20.205.0.tar.gz

Hbase versionhbase-0.90.5

Hive versionhive-0.8.1.tar.gz


二、Mysql資料庫注意事項

1.安裝mysql資料庫步驟略過,虛擬機器網路設定成host-only模式,兩邊系統都關閉防火牆,windows系統的360軟體最好也關閉,有可能會影響通訊。

資料庫使用者/密碼:root/root   hive/hive

資料庫埠:3306

Mysqll服務名:MySQL55        

以將MySQL伺服器安裝成服務。安裝成服務,系統啟動時可以自動啟動MySQL伺服器

目前設定為不隨作業系統啟動而自動啟動

啟動/關閉mysql資料庫服務命令,必須啟動服務才能運算元據庫

net start mysql  net stop mysql

2.檢視Mysql版本(注意 V大寫)

Hadoop之Hive本地與遠端mysql資料庫管理模式安裝手冊

3.登陸Mysql,從windows上登入

Hadoop之Hive本地與遠端mysql資料庫管理模式安裝手冊

4.mysql上建立hive使用者並授予足夠的許可權

本人使用的是windowsmysql自帶的MySQL workbench客戶端軟體建立的使用者

Hadoop之Hive本地與遠端mysql資料庫管理模式安裝手冊

Add Account :新增一個使用者

Namehive   密碼  hive

Limit  Connectivity  to  Hosts  Matching%     百分號是萬用字元意思,就是說不在限制登入的主機,你從任何一臺客戶機都可以登入,如果寫上ip地址說明此使用者只能從這個ip地址的機器上登入mysql資料庫

Hadoop之Hive本地與遠端mysql資料庫管理模式安裝手冊

全部勾選授予all許可權

命令方式:Create  user  hive  identified  by  hive;

Hadoop部署環境

主機名

IP

節點名

備註

h1

192.168.2.102

master

namenodejobtracker

h2

192.168.2.103

slave1

datanodetasktracker

H4

192.168.2.105

slave2

datanodetasktracker


Windows               192.168.2.110           Mysql                  window7部署mysql

master上測試是否能成功連線遠端mysql

[grid@h1 grid]$ ping 192.168.2.110

PING 192.168.2.110 (192.168.2.110) 56(84) bytes of data.

64 bytes from 192.168.2.110: icmp_seq=1 ttl=64 time=0.603 ms    是通的

64 bytes from 192.168.2.110: icmp_seq=2 ttl=64 time=0.283 ms

64 bytes from 192.168.2.110: icmp_seq=3 ttl=64 time=0.301 ms

--- 192.168.2.110 ping statistics ---

3 packets transmitted, 3 received, 0% packet loss, time 2010ms

rtt min/avg/max/mdev = 0.283/0.395/0.603/0.148 ms

[grid@h1 grid]$ mysql -h192.168.2.110 -uhive -phive

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 11

Server version: 5.5.27 MySQL Community Server (GPL)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.

This software comes with ABSOLUTELY NO WARRANTY. This is free software,

and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>


 

5.mysql上建立hive資料庫用於存放hive後設資料(即資料字典)

檢視mysql資料庫軟體中都存在哪些資料庫,現在一共有6

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| performance_schema |

| sakila             |

| test               |

| world              |

+--------------------+

6 rows in set (0.01 sec)

開啟名為mysql的資料庫,只有開啟才能操作哦

mysql> use mysql;

Database changed                     按Enter鍵出現Database changed 時說明操作成功!

檢視現在的資料庫中存在什麼表,一共有24

mysql> show tables;

+---------------------------+

| Tables_in_mysql           |

+---------------------------+

| columns_priv              |

| db                        |

| event                     |

| func                      |

| general_log               |

| help_category             |

| help_keyword              |

| help_relation             |

| help_topic                |

| host                      |

| ndb_binlog_index          |

| plugin                    |

| proc                      |

| procs_priv                |

| proxies_priv              |

| servers                   |

| slow_log                  |

| tables_priv               |

| time_zone                 |

| time_zone_leap_second     |

| time_zone_name            |

| time_zone_transition      |

| time_zone_transition_type |

| user                      |

+---------------------------+

24 rows in set (0.01 sec)

建立名為hive的庫

mysql> create database hive;         

Query OK, 1 row affected (0.00 sec)

檢視是否建立成功(檢視mysql資料庫軟體中都存在哪些資料庫)

mysql> show database;

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'database' at line 1

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| hive               |             這裡已經建立hive庫成功

| mysql              |

| performance_schema |

| sakila             |

| test               |

| world              |

+--------------------+

7 rows in set (0.00 sec)

開啟名為hive的資料庫

mysql> use hive;

Database changed

mysql> show tables;             檢查hive庫有哪些表,當然現在還沒有建立目前沒有表

Empty set (0.00 sec)


 

三、Hive遠端模式安裝

1.先把hive-0.8.1.tar.gz包上傳到 master/home/grid 目錄下然後解包

[grid@h1 grid]$ tar -zxvf hive-0.8.1.tar.gz

2.mysql-connector-java-5.1.22-bin.jar包複製到hivelib目錄下

[grid@h1 grid]$ cp mysql-connector-java-5.1.22-bin.jar hive-0.8.1/lib/

3.配置環境變數

[grid@h1 grid]$ vim .bashrc

export HIVE_HOME=/home/grid/hive-0.8.1

4.修改/home/grid/hive-0.8.1/bin/hive-config.sh

[grid@h1 bin]$ pwd

/home/grid/hive-0.8.1/bin

[grid@h1 bin]$ vim hive-config.sh

# hive-config.sh

export JAVA_HOME=/usr/java/jdk1.6.0_25

export HIVE_HOME=/home/grid/hive-0.8.1

export HADOOP_HOME=/home/grid/hadoop-0.20.2     hive捆綁hadoop叢集,必須知道hadoop配置檔案位置

5.根據hive-default.xml 複製 hive-site.xml 核心配置檔案,修改內容

cp  hive-default.xml  hive-site.xml

[grid@h1 conf]$ vim hive-site.xml

  javax.jdo.option.ConnectionURL

  jdbc:mysql://192.168.2.110:3306/hive?createDatabaseIfNotExist=true

  JDBC connect string for a JDBC metastore

指出連線mysql的方法

  javax.jdo.option.ConnectionDriverName

  com.mysql.jdbc.Driver

  Driver class name for a JDBC metastore

Mysq連線驅動程式

  javax.jdo.option.ConnectionUserName

  hive

  username to use against metastore database

Mysql登陸使用者名稱

  javax.jdo.option.ConnectionPassword

  hive

  password to use against metastore database

Mysql登陸密碼

  hive.metastore.local

  true這是本地   false這是遠端

  controls whether to connect to remove metastore server or open a new metastore server in Hive Client JVM

使用遠端資料庫,這裡的false是指hive服務和metastore後設資料儲存服務不在一個程式中,兩個各自獨立它們兩個可以放在不同的機器上,如果是true說明這2個服務是合併在一個程式中的,mysql資料庫是獨立的一個程式,即可在本地機器也可以在遠端機器

  hive.metastore.warehouse.dir

  /user/hive/warehouse

  location of default database for the warehouse

Hive表資料存放目錄,每一個表對應一個目錄,這是自帶預設值

  hive.exec.scratchdir

  /tmp/hive-${user.name}

  Scratch space for Hive jobs

Hive臨時檔案存放的目錄,這個也不用管,使用預設值即可

這句話是自己新增的,原文裡沒有

  hive.metastore.uris

  thrift://127.0.0.1:9083

Thrift:是hive的通訊協議

127.0.0.1:9083  是指在哪臺機器上啟動hive 服務,只有啟動服務才能正常使用hive

6.配置hive-log4j.properties

log4j.appender.EventCounter=org.apache.hadoop.log.metrics.EventCounter   修改這一行

這裡請注意,我修改後啟動hive報錯,恢復原狀就沒事了,大家可以試試

7.檢查hadoop叢集狀態

[grid@h1 conf]$ hadoop dfsadmin -report

Configured Capacity: 19865944064 (18.5 GB)

Present Capacity: 8831234048 (8.22 GB)

DFS Remaining: 8816201728 (8.21 GB)

DFS Used: 15032320 (14.34 MB)

DFS Used%: 0.17%

Under replicated blocks: 4

Blocks with corrupt replicas: 0

Missing blocks: 0

-------------------------------------------------

Datanodes available: 2 (2 total, 0 dead)             沒有問題2slave執行正常

Name: 192.168.2.103:50010

Decommission Status : Normal

Configured Capacity: 9932972032 (9.25 GB)

DFS Used: 7516160 (7.17 MB)

Non DFS Used: 5402759168 (5.03 GB)

DFS Remaining: 4522696704(4.21 GB)

DFS Used%: 0.08%

DFS Remaining%: 45.53%

Last contact: Mon Nov 19 17:51:50 CST 2012

Name: 192.168.2.105:50010

Decommission Status : Normal

Configured Capacity: 9932972032 (9.25 GB)

DFS Used: 7516160 (7.17 MB)

Non DFS Used: 5631950848 (5.25 GB)

DFS Remaining: 4293505024(4 GB)

DFS Used%: 0.08%

DFS Remaining%: 43.22%

Last contact: Mon Nov 19 17:51:48 CST 2012

8.修改mysql字符集

mysql> use hive;

Database changed

mysql> alter database hive character set latin1;

Query OK, 1 row affected (0.11 sec)

9.啟動hive

[grid@h1 bin]$ pwd

/home/grid/hive-0.8.1/bin

[grid@h1 bin]$ ./hive

[grid@h1 bin]$ ./hive

Logging initialized using configuration in file:/home/grid/hive-0.8.1/conf/hive-log4j.properties

Hive history file=/tmp/grid/hive_job_log_grid_201211191942_411407039.txt

hive> show tables;                           顯示錶,沒有建立當然沒有

OK

Time taken: 3.2 seconds

hive> create table leo1 (x int,y int);              建立表

OK

Time taken: 1.191 seconds

hive> show tables;                           可以顯示出來了

OK

leo1

Time taken: 0.148 seconds

已經進入hive模式,還可以建立表

註明:

當你設定的為本地模式時候

  hive.metastore.local

  true

  controls whether to connect to remove metastore server or open a new metastore server in Hive Client JVM

[grid@h1 bin]$ ./hive

Logging initialized using configuration in file:/home/grid/hive-0.8.1/conf/hive-log4j.properties

Hive history file=/tmp/grid/hive_job_log_grid_201211231243_664195168.txt

hive> show tables;

OK

leo1

Time taken: 21.218 seconds

直接進入hive命令列shell,後臺自動啟動metestore服務和hive服務而且這2個服務還是同在一個程式中,不用手工啟動,這點和遠端模式還是有點不同的。

當你設定的為遠端模式時候

[grid@h1 bin]$ ./hive --service hiveserver       這是啟動hive服務

Starting Hive Thrift Server

[grid@h1 bin]$ ./hive --service metastore        這是啟動後設資料儲存服務

Starting Hive Metastore Server

正常情況是都在這卡住了,相當於前臺啟動,如果有異常請關閉當前視窗,另開一個視窗重新啟動這2個服務。為什麼要手動啟動這2個服務呢,因為這2個服務都是相互獨立的程式,可以部署在不同的機器上

[grid@h1 bin]$ ./hive

Logging initialized using configuration in file:/home/grid/hive-0.8.1/conf/hive-log4j.properties

Hive history file=/tmp/grid/hive_job_log_grid_201211231324_199334603.txt

hive> show tables;                   這裡顯示建立了2個表,這2個表都是建在HDFS檔案系統上的

OK                                   mysql只儲存hive使用者建立表的後設資料

leo1

leo2

Time taken: 0.538 seconds

hive> create table leo2 (x int);

OK

Time taken: 0.317 seconds

進入mysql資料庫檢視hive建立表的後設資料

mysql> use hive;

Database changed

mysql> show tables;

+--------------------+

| Tables_in_hive     |

+--------------------+

| bucketing_cols     |

| cds                |

| columns_v2         |

| database_params    |

| dbs                |

| idxs               |

| index_params       |

| part_col_privs     |

| part_privs         |

| partition_key_vals |

| partition_keys     |

| partition_params   |

| partitions         |

| sd_params          |

| sds                |

| sequence_table     |

| serde_params       |

| serdes             |

| sort_cols          |

| table_params       |

| tbl_col_privs      |

| tbl_privs          |

| tbls               |

+--------------------+  紅色的就是hive的資料字典表,這些表第一次連線時就已經建立了,後面就會一直存在,只是裡面的後設資料內容會跟著hive操作而變化。

23 rows in set (0.00 sec)

mysql> select * from tbls;

+--------+-------------+-------+------------------+-------+-----------+-------+----------+---------------+--------------------+--------------------+

| TBL_ID | CREATE_TIME | DB_ID | LAST_ACCESS_TIME | OWNER | RETENTION | SD_ID | TBL_NAME | TBL_TYPE      | VIEW_EXPANDED_TEXT | VIEW_ORIGINAL_TEXT |

+--------+-------------+-------+------------------+-------+-----------+-------+----------+---------------+--------------------+--------------------+

|      6 |  1353597034 |     1 |                0 | grid  |         0 |     6 | leo1     | MANAGED_TABLE | NULL               | NULL               |

|     11 |  1353648090 |     1 |                0 | grid  |         0 |    11 | leo2     | MANAGED_TABLE | NULL               | NULL               |

+--------+-------------+-------+------------------+-------+-----------+-------+----------+---------------+--------------------+--------------------+

2 rows in set (0.00 sec)

hive> drop table leo2;        我刪除了 leo2

OK

Time taken: 1.796 seconds

mysql> select * from tbls;     注意提示符

+--------+-------------+-------+------------------+-------+-----------+-------+----------+---------------+--------------------+--------------------+

| TBL_ID | CREATE_TIME | DB_ID | LAST_ACCESS_TIME | OWNER | RETENTION | SD_ID | TBL_NAME | TBL_TYPE      | VIEW_EXPANDED_TEXT | VIEW_ORIGINAL_TEXT |

+--------+-------------+-------+------------------+-------+-----------+-------+----------+---------------+--------------------+--------------------+

|      6 |  1353597034 |     1 |                0 | grid  |         0 |     6 | leo1     | MANAGED_TABLE | NULL               | NULL               |

+--------+-------------+-------+------------------+-------+-----------+-------+----------+---------------+--------------------+--------------------+

1 row in set (0.00 sec)

Leo2表的後設資料也跟著沒有了


 

10.使用web瀏覽器訪問hive

[grid@h1 bin]$ ./hive --service hwi           啟動hwi服務

12/11/23 13:50:45 INFO hwi.HWIServer: HWI is starting up

12/11/23 13:50:45 WARN conf.HiveConf: DEPRECATED: Ignoring hive-default.xml found on the CLASSPATH at /home/grid/hive-0.8.1/conf/hive-default.xml

12/11/23 13:50:45 INFO mortbay.log: Logging to org.slf4j.impl.Log4jLoggerAdapter(org.mortbay.log) via org.mortbay.log.Slf4jLog

12/11/23 13:50:45 INFO mortbay.log: jetty-6.1.14

12/11/23 13:50:46 INFO mortbay.log: Extract jar:file:/home/grid/hive-0.8.1/lib/hive-hwi-0.8.1.war!/ to /tmp/Jetty_192_168_2_102_9999_hive.hwi.0.8.1.war__hwi__.4m0x2o/webapp

12/11/23 13:50:47 INFO mortbay.log: Started SocketConnector@192.168.2.102:9999

12/11/23 13:51:21 INFO hive.metastore: Trying to connect to metastore with URI thrift://127.0.0.1:9083

12/11/23 13:51:21 INFO hive.metastore: Connected to metastore.

12/11/23 13:51:21 ERROR hive.metastore: Unable to shutdown local metastore client

12/11/23 13:51:21 ERROR hive.metastore: [Ljava.lang.StackTraceElement;@16ef71

Hive history file=/tmp/grid/hive_job_log_grid_201211231351_1262762954.txt

這個服務也是前臺啟動,在這裡就卡死了,不用管

啟動瀏覽器在位址列:http://192.168.2.102:9999/hwi

Hadoop之Hive本地與遠端mysql資料庫管理模式安裝手冊


Leonarding
2012.11.19
天津&winter
分享技術~成就夢想

Bloghttp://space.itpub.net/26686207

 

 

 

 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26686207/viewspace-749844/,如需轉載,請註明出處,否則將追究法律責任。

相關文章