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 下载
这里我们使用国内的清华镜像站点下载比较快
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)