Hive系列文章(1):hive安裝和入門

本系列文章使用的硬件環境爲:centOS 6.5 64bit / 4G RAM 30G HHD
軟件版本:hive2.0.0;Hadoop版本爲2.6.4;JDK版本爲:1.8.0html

一、 Hive安裝

1.一、 JDK安裝

step0:讀者能夠直接上Oracle官方網站上下載對應平臺和版本的JDK。本文使用的環境的Linux 64位,因此選擇Linux x64平臺,本文使用的是編譯好的壓縮文件,不使用rpm安裝,選擇tar.gz文件後綴的文件,下載以前須要點選下載文件列表上方的Accept License Agreement選項,而後點擊文件連接便可下載。
step1:將下載文件拷貝到/usr/localjava

sudo mv ~/Download/jdk-8u101-linux-x64.tar.gz /usr/local/

step2:解壓軟件包,並重命名,最後刪除無用的壓縮文件node

cd /usr/local
sudo tar zxvf jdk-8u101-linux-x64.tar.gz
sudo mv jdk1.8.0_101 jdk1.8.0
sudo rm -f jdk-8u101-linux-x64.tar.gz

step3:配置環境變量,用戶能夠選擇全局環境變量(對全部用戶有效),也能夠選擇配置用戶局部的環境變量(對當前用戶有效),由於JDK可能多個用戶都會用到,所以選擇配置全局環境變量,用vim編輯/etc/profile文件,在文件末尾添加如下的配置信息mysql

export JAVA_HOME=/usr/local/jdk1.8.0
export JRE_HOME=$JAVA_HOME/jre
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

step4:驗證jdk是否安裝成功linux

[hadoop@hadoop ~]$ source /etc/profile
[hadoop@hadoop ~]$ echo $JAVA_HOME
/usr/local/jdk1.8.0
[hadoop@hadoop ~]$ java -version
java version "1.8.0_101"
Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)

若是運行上面的命令能正確輸出,表示JDK已經安裝好了。web

1.二、 Hadoop安裝

step0:Hadoop下載,讀者能夠上Hadoop官網下載對應的版本便可,本文使用的是hadoop-2.6.4.tar.gz的預編譯版本。
step1:ssh免密碼登陸,經過命令ssh-keygen -t rsa生成公鑰和私鑰,生成過程當中會要求輸入密鑰生成的位置等,一路直接回車便可sql

[hadoop@hadoop ~]$ ssh-keygen -t rsa -P ''
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hadoop/.ssh/id_rsa):
Created directory '/home/hadoop/.ssh'.
Your identification has been saved in /home/hadoop/.ssh/id_rsa.
Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.
The key fingerprint is:
d7:53:fb:dd:86:61:48:c1:26:a6:ae:fa:14:96:e0:93 hadoop@hadoop.hadoop
The key's randomart image is:
+--[ RSA 2048]----+
|           ..    |
|          o o.   |
|    .    o o. .  |
|   . o ..  o o . |
|    E +.S . + +  |
|     o ...   o +o|
|      ..      . =|
|     ..        . |
|    .o.          |
+-----------------+
[hadoop@hadoop ~]$ ls .ssh/
id_rsa  id_rsa.pub

公鑰和私鑰默認會生成在~/.ssh目錄下,其中id_rsa是私鑰,id_rsa.pub是公約,若是想要在遠程機器上免密碼登陸到本機的該用戶下,將遠程機器的公鑰加入到~/.ssh/authorized_keys文件中便可實現免密碼登陸,因爲咱們的集羣就是一臺單機,,因此只須要免密碼登陸本機便可,因此只需將本機的公鑰加入authorized_keys文件數據庫

[hadoop@hadoop ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[hadoop@hadoop ~]$ ssh localhost
The authenticity of host 'localhost (::1)' can't be established.
RSA key fingerprint is ac:a4:52:70:a3:68:d9:bd:59:42:0a:6a:68:ab:6f:dd.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
hadoop@localhost's password:

嘗試登錄本機發現仍是須要密碼,百思不得其解,google以後發現:若是但願ssh公鑰生效需知足至少下面兩個條件:apache

  1. ssh目錄的權限必須是700vim

  2. ssh/authorized_keys文件權限必須是600

詳見:《遠程登錄不要密碼,使用authorized_keys不生效的解決方法
修改密鑰文件的訪問權限

[hadoop@hadoop ~]$ chmod 700 ~/.ssh/
[hadoop@hadoop ~]$ chmod 600 ~/.ssh/authorized_keys
[hadoop@hadoop ~]$ ssh localhost
Last login: Tue Sep 13 11:27:48 2016 from localhost
[hadoop@hadoop ~]$

順利免密碼登陸到本機,SSH免密碼登陸搞定,若是配置分佈式Hadoop集羣,只需將多臺多臺機器的公鑰文件加入到authorized_keys文件便可。
step2:Hadoop安裝
解壓文件

[hadoop@hadoop ~]$ cd ~/Downloads/
[hadoop@hadoop Downloads]$ ll
總用量 191424
-rwxr-xr-x. 1 root root 196015975 9月   9 07:39 hadoop-2.6.4.tar.gz
[hadoop@hadoop Downloads]$ sudo mv hadoop-2.6.4.tar.gz /usr/local/
[sudo] password for hadoop:
[hadoop@hadoop Downloads]$ cd /usr/local/
[hadoop@hadoop Downloads]$ sudo tar -zxvf hadoop-2.6.4.tar.gz
……省略……
[hadoop@hadoop local]$ sudo rm -rf hadoop-2.6.4.tar.gz

配置hadoop
1):編輯hadoop-2.6.4/etc/hadoop/core-site.xml文件,在configuration節點下增長如下配置:

<property>
    <name>hadoop.tmp.dir</name>
    <value>/data/hadoop/tmp</value>
</property>
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:9000</value>
</property>

配置項hadoop.tmp.dir配置的是Hadoop的臨時文件夾,fs.defaultFS配置的是Hadoop dfs的IP和端口號。
2):編輯hadoop-2.6.4/etc/hadoop/hdfs-site.xml文件,在configuration節點下增長如下配置:

<property>
    <name>dfs.replication</name>
    <value>1</value>
</property>
<property>
    <name>dfs.namenode.name.dir</name>
    <value>/data/hadoop/name</value>
</property>
<property>
    <name>dfs.datanode.data.dir</name>
    <value>/data/hadoop/data</value>
</property>

dfs.replication配置複製因子,即每一個hdfs塊複製幾份。 dfs.namenode.name.dir:設置hdfs的元數據保存路徑。 dfs.datanode.data.dir:設置hdfs數據保存路徑
3):編輯hadoop-2.6.4/etc/hadoop/mapred-site.xml文件,在configuration節點下增長如下配置:

<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>localhost:10020</value>
</property>
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>localhost:19888</value>
</property>

4):編輯hadoop-2.6.4/etc/hadoop/yarn-site.xml文件,在configuration節點下增長如下配置:

<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<property>
    <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
    <name>yarn.resourcemanager.address</name>
    <value>localhost:8032</value>
</property>
<property>
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>localhost:8030</value>
</property>
<property>
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>localhost:8035</value>
</property>
<property>
    <name>yarn.resourcemanager.admin.address</name>
    <value>localhost:8033</value>
</property>
<property>
    <name>yarn.resourcemanager.webapp.address</name>
    <value>localhost:8088</value>
</property>

5):編輯hadoop-2.6.4/etc/hadoop/yarn-site.xml文件,將25行,export JAVA_HOME=${JAVA_HOME}修改成:export JAVA_HOME=/usr/local/jdk1.8.0

6):建立相應的數據文件夾,並將hadoop目錄以及數據目錄全部者修改成hadoop用戶:

[hadoop@hadoop hadoop]$ sudo mkdir -p /data/hadoop/tmp
[hadoop@hadoop hadoop]$ sudo mkdir -p /data/hadoop/name
[hadoop@hadoop hadoop]$ sudo mkdir -p /data/hadoop/data
[hadoop@hadoop hadoop]$ sudo chown -R hadoop:hadoop /data
[hadoop@hadoop hadoop]$ sudo chown -R hadoop:hadoop /usr/local/hadoop-2.6.4

配置環境變量
編輯'/etc/profile'文件(對全部用戶生效,若是隻想對當前用戶生效也能夠在~/.bashrc或者~/.bash_profile文件中添加) 添加下面的配置項:

export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

編輯完成以後執行source /etc/profile命令,使配置生效。
格式化hdfs:執行指令hdfs namenode -format對HDFS進行格式化:

[hadoop@hadoop hadoop-2.6.4]$ hdfs namenode -format
……省略……
16/09/13 15:54:53 INFO common.Storage: Storage directory /data/hadoop/name has been successfully formatted.
16/09/13 15:54:53 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
16/09/13 15:54:53 INFO util.ExitUtil: Exiting with status 0
16/09/13 15:54:53 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at localhost/127.0.0.1
************************************************************/

若是看到Storage directory /data/hadoop/name has been successfully formatted.這樣的字樣,表示hdfs已經完成格式化。
啓動hadoop
執行指令start-all.sh或者分別執行start-dfs.shstart-yarn.sh,便可啓動hadoop,執行指令jps驗證hadoop是否啓動正常

[hadoop@hadoop hadoop-2.6.4]$ start-all.sh
……省略……
[hadoop@hadoop hadoop-2.6.4]$ jps
18513 ResourceManager
18919 NameNode
19403 NodeManager
19517 Jps
19198 SecondaryNameNode
19039 DataNode

jps指令執行結果應該看到如下幾個進程:

  • ResourceManager

  • NodeManager

  • NameNode

  • SecondaryNameNode

  • DataNode

若是能看到以上幾個進程,表示本機的hadoop已經配置完成,並正常啓動。

1.三、 MySQL安裝

step1:MySQL安裝
在centOS中可使用yum安裝mysql,執行命令sudo yum -y install mysql-server

[hadoop@hadoop hadoop-2.6.4]$ sudo yum -y install mysql-server
……省略……

step2:建立hive元數據數據庫
使用指令 mysql -u root登陸mysql數據庫,初始安裝默承認不用密碼直接登陸。能夠登陸以後使用對應的語句修改用戶密碼。

[hadoop@hadoop hadoop-2.6.4]$ mysql -u root
……省略……
mysql> create database hive_metastore;
Query OK, 1 row affected (0.00 sec)

step3:建立帳號並受權

mysql> create user 'hive'@'%' identified by 'hive';
Query OK, 0 rows affected (0.00 sec)

mysql> grant all privileges on hive_metastore.* to 'hive'@'%' identified by 'hive' with grant option;
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

到此mysql已經安裝完成,併成功爲hive建立了元數據數據庫。

1.四、 Hive安裝

step1:下載hive
讀者能夠上hive官方網站上進行下載,本文使用的是Hive2.0.0預編譯版本。
step2:解壓,我將hive安裝到/usr/local目錄下

[hadoop@hadoop local]$ sudo mv ~/Download/apache-hive-2.0.0-bin.tar.gz /usr/local/
[hadoop@hadoop local]$ cd /usr/local/
[hadoop@hadoop local]$ sudo tar -zxvf apache-hive-2.0.0-bin.tar.gz
……省略……
[hadoop@hadoop local]$ sudo rm -f apache-hive-2.0.0-bin.tar.gz

step3:hive配置

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property><name>hive.metastore.local</name><value>true</value></property>
    <property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://127.0.0.1:3306/hive_metastore?characterEncoding=UTF-8</value></property>
    <property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value></property>
    <property><name>javax.jdo.option.ConnectionUserName</name><value>hive</value></property>
    <property><name>javax.jdo.option.ConnectionPassword</name><value>hive</value></property>
</configuration>

step4:mysql JDBC驅動安裝
上mysql官網(http://dev.mysql.com/download...下載mysql的JDBC驅動包,將jdbc驅動包拷貝到 $HIVE_HOME/lib目錄下

[hadoop@hadoop Download]$ tar -zxvf mysql-connector-java-5.1.39.tar.gz
……省略……
[hadoop@hadoop Download]$ sudo cp mysql-connector-java-5.1.39/mysql-connector-java-5.1.39-bin.jar /usr/local/apache-hive-2.0.0-bin/lib/

step5:建立Hive元數據schema
hive的bin目錄下有一個腳本schematool能夠用於建立schema,執行命令./schematool -initSchema -dbType ... 便可建立hive元數據的schema

[hadoop@hadoop bin]$ ./schematool -initSchema -dbType mysql
……省略……
Initialization script completed
schemaTool completed

step6:配置環境變量
編輯/etc/profile文件,添加一下配置信息,並執行source /etc/profile使配置生效

export HIVE_HOME=/usr/local/pache-hive-2.0.0-bin
export PATH=$PATH:$HIVE_HOME/bin

step7:驗證

[hadoop@hadoop ~]$ hive -S
……省略……
hive>

若是可以正確啓動hive cli工具,說明hive的安裝和配置已經完成。

二、 Hive初體驗

Hive的命令行工具和mysql的命令行工具十分類似,也提供了一些好比查看庫或者表等指令,熟悉mysql的能夠應該不會陌生。 其中有些指令用於參數設置,至於參數的具體含義,後續文章會介紹。

hive> create database testDB;
hive> use testDB;
hive> create table if not exists test_tbl_01(col1 string,col2 int);
hive> insert into test_tbl_01 values('test string',1);
hive> select * from test_tbl_01;
test string    1
hive> set hive.cli.print.header=true;
hive> select * from test_tbl_01;
test_tbl_01.col1    test_tbl_01.col2
test string    1
hive> set hive.cli.print.current.db=true;
hive (testDB)> desc test_tbl_01;
col_name    data_type    comment
col1                    string
col2                    int
hive (testDB)>

參考:

  1. http://www.oracle.com/technet...

  2. http://blog.csdn.net/huang_xw...

相關文章
相關標籤/搜索