Hive概述

Hive是基于Hadoop构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据。

其在Hadoop的架构体系中承担了一个SQL解析的过程,它提供了对外的入口来获取用户的指令然后对指令进行分析,

解析出一个MapReduce程序组成可执行计划,并按照该计划生成对应的MapReduce任务提交给Hadoop集群处理,

获取最终的结果。元数据——如表模式——存储在名为metastore的数据库中。

Metastore

metastore是Hive元数据集中存放地。它包括两部分:服务和后台数据存储。

有三种方式配置metastore:内嵌metastore、本地metastore以及远程metastore。 
本次搭建中采用MySQL作为远程仓库,部署在master节点上,hive服务端也安装在master上,hive客户端即slave访问hive服务器。

安装要求

10.0.0.200  master

10.0.0.211  slave1

10.0.0.212  slave2

1)mysql安装在master上

2)Hive三个节点都安装

Hive 下载

官网:http://hive.apache.org/

这里我们使用国内的清华镜像站点下载比较快

wget https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-1.2.2/apache-hive-1.2.2-bin.tar.gz

环境变量配置(三个节点都配置)

[hadoop@master ~]$ tail -3 /etc/profile
HIVE_HOME=/home/hadoop/apache-hive-1.2.2-bin   #hive的解压路径
PATH=$PATH:$HIVE_HOME/bin
export HIVE_NAME PATH

mysql安装,这里选择源码编译安装(不推荐)

(可以选择rpm或yum安装,源码编译安装,注意至少要选择5.5版本以上的)

1)安装依赖包

yum install gcc gcc-c++ ncurses-devel  -y

2)安装cmake

 wget http://www.cmake.org/files/v2.8/cmake-2.8.12.tar.gz
 tar zxvf cmake-2.8.12.tar.gz
 cd cmake-2.8.12
 ./bootstrap 
 make && make instal

3)创建用户及修改目录

groupadd mysql
useradd -g mysql mysql
mkdir -p /data/mysql/data/
mkdir -p /data/mysql/log

4)获取mysql包并且安装

复制代码
wget https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-5.6/mysql-5.6.40.tar.gz
tar zxvf mysql-5.6.40.tar.gz
cd mysql-5.6.40

 cmake \
-DCMAKE_INSTALL_PREFIX=/data/mysql \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/data/mysql/data \
-DMYSQL_TCP_PORT=3306 \
-DENABLE_DOWNLOADS=1

make&&make install
#这部分需要很长时间
复制代码

5)修改目录权限

 chmod +w /data/mysql/
 chown -R mysql:mysql /data/mysql/
 ln -s /data/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18
 ln -s /data/mysql/mysql.sock /tmp/mysql.sock
cp /data/mysql/support-files/my-default.cnf /etc/my.cnf
cp /data/mysql/support-files/mysql.server /etc/init.d/mysqld

6)初始化数据库

/data/mysql/scripts/mysql_install_db --user=mysql --defaults-file=/etc/my.cnf --basedir=/data/mysql --datadir=/data/mysql/data

7)启动数据库

chmod +x /etc/init.d/mysqld
/etc/init.d/mysqld start
ln –s /data/mysql/bin/mysql /usr/bin/

8) 创建Hive用户并授予权限

mysql>CREATE USER 'hive' IDENTIFIED BY 'hive';
mysql>GRANT ALL PRIVILEGES ON *.* TO 'hive'@'master' WITH GRANT OPTION;
mysql>flush privileges;

9)创建Hive数据库

create database hive;
#修改数据库编码
alter database hive character set latin1;  (#防止进入数据库无法创建表)

 

配置Hive

修改配置文件 
进入到hive的配置文件目录下,找到hive-default.xml.template,cp份为hive-default.xml 
另创建hive-site.xml并添加下面内容

复制代码
<configuration>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true</value>
        <description>JDBC connect string for a JDBC metastore</description>    
    </property>   
    <property> 
        <name>javax.jdo.option.ConnectionDriverName</name> 
        <value>com.mysql.jdbc.Driver</value> 
        <description>Driver class name for a JDBC metastore</description>     
    </property>               
    <property> 
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>hive</value>
        <description>username to use against metastore database</description>
    </property>
    <property>  
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>hive</value>
        <description>password to use against metastore database</description>  
    </property>          
</configuration>
复制代码

拷贝一份hive-env.sh.template为hive-env.sh 并指定加载的hadoop路径

# HADOOP_HOME=${bin}/../../hadoop
HADOOP_HOME=/usr/local/hadoop

JDBC下载(mysql的jar连接工具)

mysql官网下载地址:https://dev.mysql.com/downloads/connector/j/5.1.html

其他:https://pan.baidu.com/s/1eUQb5dzhTp6MGfnXfM1gDw

#解压
[hadoop@master ~]$ tar xf mysql-connector-java-5.1.47
[hadoop@master ~]$ cp mysql-connector-java-5.1.47/*  apache-hive-1.2.2-bin/lib/

配置hive客户端

复制代码
scp -r apache-hive-1.2.2-bin/ hadoop@slave1:/hoem/hadoop
scp -r apache-hive-1.2.2-bin/ hadoop@slave2:/home/hadoop

[hadoop@slave1 ~]$ cat apache-hive-1.2.2-bin/conf/hive-site.xml
<configuration>
<property>
<name>hive.metastore.uris</name>
<value>thrift://master:9083</value>
</property>
</configuration>

复制代码

Hive启动

复制代码
[hadoop@master ~]$  hive --service metastore &
[hadoop@master ~]$ jps
29010 NameNode
33810 Jps
29358 ResourceManager
29181 SecondaryNameNode
31597 RunJar     ===》#出现RunJar代表启动成功
复制代码

访问测试

复制代码
[hadoop@master ~]$ hive

Logging initialized using configuration in jar:file:/home/hadoop/apache-hive-1.2.2-bin/lib/hive-common-1.2.2.jar!/hive-log4j.properties
hive> show databases;
OK
default
test
Time taken: 2.009 seconds, Fetched: 2 row(s)
hive> create database src;
OK
Time taken: 0.458 seconds
hive> show databases;
OK
default
src
test
Time taken: 0.034 seconds, Fetched: 3 row(s)
hive> use src;
OK
Time taken: 0.033 seconds
hive> create table srctest(id int);
OK
Time taken: 0.57 seconds
hive> show tables;
OK
srctest
Time taken: 0.046 seconds, Fetched: 1 row(s)
hive> 
复制代码

slave访问

复制代码
 [hadoop@slave2 ~]$ hive

Logging initialized using configuration in jar:file:/home/hadoop/apache-hive-1.2.2-bin/lib/hive-common-1.2.2.jar!/hive-log4j.properties
hive> show databases;
OK
default
src
test
Time taken: 1.598 seconds, Fetched: 3 row(s)
hive> use src;
OK
Time taken: 0.232 seconds
hive> show tables;
OK
srctest
Time taken: 0.159 seconds, Fetched: 1 row(s)

 

 转自:https://www.cnblogs.com/sykblogs/articles/10078545.html