APACHE HIVE
ApacheHive™数据仓库软件可以使用sql方便地读取、写入和管理驻留在分布式存储中的大型数据集。结构可以投影到已经存储的数据上。提供了一个命令行工具和JDBC驱动程序,将用户连接到Hive。
这个ApacheHive™数据仓库软件可以方便地读取、写入和管理分布存储中的大型数据集,并使用SQL语法进行查询。
本地模式
需要安装jdk至少1.7或更高版本的
首先解压安装包到你放置的目录
$ tar -xzvf hive-x.y.z.tar.gz
设置环境变量HIVE_HOME若要指向安装目录
cp hive-env.sh.template hive-env.sh
vim hive-env.sh
运行hive
$ $HIVE_HOME/bin/hive
启动之后不报错,输入一个命令之后就报错;解决方案先初始化;
bin/schematool -dbType <db type> -initSchema
# 初始化之前最好把之前的数据库删除掉
rm -rf derby.log metastore_db/
# 初始化
bin/schematool -dbType derby -initSchema
单用户模式
记录放到hdfs中;hive表和数据库放到mysql中
配置文件:复制conf/hive-default.xml.template到hive-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- hive数据仓库存储的位置;
hadoop中hdfs的位置
-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/data/hive/data/</value>
</property>
<!-- 本地单用户启动 -->
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property>
<!--
hive中数据库相关的逻辑信息存储到mysql中
hive:文件(hive相关的文件);存储到hdfs中
hive:逻辑的概念:存储到了数据库中
jdbc相关的信息
-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.56.1/hive-demo?useSSL=false&serverTimezone=GMT%2B8&allowMultiQueries=true&allowPublicKeyRetrieval=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
</configuration>
-
准备一个mysql数据库;创建一个数据库(hive-demo) 在线上正式环境,都是把mysql装到centos中;(只装一个)
-
初始化操作;
bin/schematool -dbType mysql -initSchema
若是没有jdbc的驱动包则会报错
将jdbc连接mysql的驱动包放到Hive中;将mysql-connector-java-8.0.20.jar上传到/apache-hive/lib
- 再次格式化
- 启动服务器
bin/hive --service metastore
这个是守护进程
nohup bin/hive --service metastore &
- 启动客户端
bin/hive
常见问题
1.jar包冲突(guava)
把hadoop下面的guava-27.0-jre.jar(%hadoop_home%\share\hadoop\common\lib)复制到hive的lib下面(删除老的,留下新的)(%hive_home%/lib)