一、hive简介
Hive是一个数据仓库基础工具在Hadoop中用来处理结构化数据。它架构在Hadoop之上,总归为大数据,并使得查询和分析方便。并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。
最初,Hive是由Facebook开发,后来由Apache软件基金会开发,并作为进一步将它作为名义下Apache Hive为一个开源项目。Hive 没有专门的数据格式。 Hive 可以很好的工作在 Thrift 之上,控制分隔符,也允许用户指定数据格式。Hive不适用于在线事务处理。 它最适用于传统的数据仓库任务。
Hive 构建在基于静态批处理的Hadoop 之上,Hadoop 通常都有较高的延迟并且在作业提交和调度的时候需要大量的开销。因此,Hive 并不能够在大规模数据集上实现低延迟快速的查询,例如,Hive 在几百MB 的数据集上执行查询一般有分钟级的时间延迟。因此,
Hive 并不适合那些需要低延迟的应用,例如,联机事务处理(OLTP)。Hive 查询操作过程严格遵守Hadoop MapReduce 的作业执行模型,Hive 将用户的HiveQL 语句通过解释器转换为MapReduce 作业提交到Hadoop 集群上,Hadoop 监控作业执行过程,然后返回作业执行结果给用户。Hive 并非为联机事务处理而设计,Hive 并不提供实时的查询和基于行级的数据更新操作。Hive 的最佳使用场合是大数据集的批处理作业,例如,网络日志分析。
二、hive的特点
- 通过SQL轻松访问数据的工具,从而实现数据仓库任务(如提取/转换/加载(ETL),报告和数据分析)。
- 一种对各种数据格式施加结构的机制
- 访问直接存储在Apache HDFS或其他数据存储系统(如Apache HBase)中的文件
- 通过Apache Tez,Apache Spark或MapReduce执行查询
- 程序语言与HPL-SQL
- 通过Hive LLAP,Apache YARN和Apache Slider进行亚秒级查询检索
三、安装配置
- 解压安装:
[root@master hadoop]# ls
hadoop-2.6.0-cdh5.14.2.tar.gz hadoop-native-64-2.6.0.tar hive-1.1.0-cdh5.14.2.tar.gz zookeeper-3.4.5-cdh5.14.2.tar.gz
[root@master hadoop]# tar -zxf hive-1.1.0-cdh5.14.2.tar.gz -C /opt/bigdata/hadoop/
[root@master hadoop]# cd /opt/bigdata/hadoop/
[root@master hadoop]# ls
hadoop260 hive-1.1.0-cdh5.14.2 zk345.tar.gz zookeeper zookeeper345
[root@master hadoop]# mv hive-1.1.0-cdh5.14.2/ hive110
[root@master hadoop]# ls
hadoop260 hive110 zk345.tar.gz zookeeper zookeeper345
2、新建hive-site.xml文件
------------ thrift => rpc -----------------#
ipc => 同节点进程之间函数调用
rpc => 不同节点进程之间函数调用(微服的核心)
#thrift通过一个中间语言IDL(接口定义语言)来定义RPC的数据类型和接口,这些内容写在以.thrift结尾的文件中,
#然后通过特殊的编译器来生成不同语言的代码,以满足不同需要的开发者,比如java开发者,就可以生成java代码,c++开发者可以生成c++代码,
#生成的代码中不但包含目标语言的接口定义,方法,数据类型,还包含有RPC协议层和传输层的实现代码
[root@vwmaster conf]# vi hive-site.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/opt/bigdata/hadoop/hive110/warehouse</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>mysql
<value>jdbc:mysql://20.0.0.100:3306/hive110?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!--本地连接-->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
</property>
将mysql-java驱动拷贝到 hive110/lib中
[root@vwmaster lib]# cp /opt/install/hadoop/mysql-connector-java-5.1.38.jar ./
hive环境变量
export HIVE_HOME=/opt/bigdata/hadoop/hive110
export PATH=
P
A
T
H
:
PATH:
PATH:HIVE_HOME/bin
重启环境变量:[root@master bin]# source /etc/profile
问题重新授权
org.apache.hadoop.hive.metastore.HiveMetaException: Failed to get schema version.
hdfs dfs -chmod 777 /path/file
3、进入mysql检查存活
4、初始化hive
cd bin/
./schematool -dbType mysql -initSchema
初始化失败:org.apache.hadoop.hive.metastore.HiveMetaException: Failed to get schema version.
解决方法:
mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> update user set password=password('root') where user='root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 5 Changed: 1 Warnings: 0
#刷新权限 mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> Ctrl-C -- exit!
[root@master conf]# service mysql restart
5、启动hive访问hiveserver
[root@vwmaster bin]# ./hive
hive2数据库启动:
nohup hiveserver2 > /dev/null 2>&1 &
beeline -u jdbc:hive2://192.168.72.166:10000
[root@master bin]# nohup hiveserver2 > /dev/null 2>&1 &
[2] 7281
[root@master bin]# jps
6976 RemoteInterpreterServer
5969 NodeManager
5603 JournalNode
5284 NameNode
5845 ResourceManager
1909 -- process information unavailable
5145 QuorumPeerMain
6281 ZeppelinServer
5387 DataNode
7067 RunJar
5756 DFSZKFailoverController
7391 Jps
[2]+ Exit 255 nohup hiveserver2 > /dev/null 2>&1
[root@master bin]# beeline -u jdbc:hive2://192.168.72.166:10000
which: no hbase in (/opt/bigdata/hadoop/hive110/bin:/opt/bigdata/hadoop/zookeeper345/bin:/opt/bigdata/hadoop/zookeeper345/sbin:/opt/bigdata/hadoop/hadoop260/bin:/opt/bigdata/hadoop/hadoop260/sbin:/opt/bigdata/java/jdk180/bin:/opt/bigdata/java/tomcat85/bin:/opt/bigdata/elk/node811/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
scan complete in 1ms
Connecting to jdbc:hive2://192.168.72.166:10000
Connected to: Apache Hive (version 1.1.0-cdh5.14.2)
Driver: Hive JDBC (version 1.1.0-cdh5.14.2)
Transaction isolation: TRANSACTION_REPEATABLE_READ
Beeline version 1.1.0-cdh5.14.2 by Apache Hive
0: jdbc:hive2://192.168.72.166:10000>
启动完成:网页验证192.168.72.xxx:8000,nn1/nn2一个active一个standy表示成功