Hive总结(一)Hive 2.1.0本地模式搭建教程
来源:互联网 发布:地图数据采集gis 编辑:程序博客网 时间:2024/06/08 17:29
零.前言
Apache Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
Hive有三种运行模式:
1.内嵌模式:将元数据保存在本地内嵌的Derby数据库中,这得使用Hive最简单的方式,不过使用内嵌模式的话,缺点也比较明显,因为一个内嵌的Derby数据库每次只能访问一个数据文件,这也就意味着不支持多会话连接。这种情况应对本地测试可能都有所不足,仅供初学者熟悉应用Hive;
2.本地模式:这种模式是将元数据库保存在本地的独立数据库中(比如说MySQL),这样就能够支持多会话和多用户连接;
3.远程模式:如果我们的Hive客户端比较多,在每个客户端都安装MySQL服务还是会造成一定的冗余和浪费,这种情况下,就可以更进一步,将MySQL也独立出来,将元数据保存在远端独立的MySQL服务中。
本文为测试使用,所以搭建的为本地安装模式。
一.环境配置
hadoop 2.7
jdk 1.8.0
apache-hive-1.1.0-bin.tar.gz
二.安装mysql
sudo apt-get install mysql-server
安装过程设置root用户的密码
然后进入数据库增加用户hive,并且授权
注意先建数据库,再建立用户。
create database hive_metastore;mysql> create user 'hive' identified by '123';mysql> grant all on *.* TO 'hive'@'%' with grant option;mysql> flush privileges;
测试登录mysql
开启 sudo service mysql start
关闭 sudo service mysql stop
重启 sudo service mysql restart
状态 sudo service mysql status
登录 mysql -u hive -p
三.安装并配置Hive
1.解压缩安装包,并设置hive的使用权限
2.设置/etc/profile 环境变量,并刷新保存
source /etc/profile
3建立临时IO的tmp文件文件,并进行配置,安装在HDFS上
hadoop fs -mkdir /tmp/ 放hive临时数据 hadoop fs -mkdir /tmp/resources hadoop fs -mkdir /usr/hive/warehouse 放hive数据hadoop fs -chmod g+w /tmphadoop fs -chmod g+w /tmp/resources hadoop fs -chmod g+w /user/hive/warehouse
4./conf下更改配置
(1)cp hive-env.sh.template hive-env.sh
增加以下配置
export HADOOP_HOME=/usr/local/hadoopexport HIVE_CONF_DIR=/usr/local/hive-2.1.0/confexport HIVE_AUX_JARS_PATH=/usr/local/hive-2.1.0/lib
(2)cp hive-default.xml.template hive-site.xml
[注]该配置中配置较多,需用/字符串进行查找
增加配置
<property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/hive_metastore?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>数据库用户名</value> //hive <description>Username to use against metastore database</description></property><property> <name>javax.jdo.option.ConnectionPassword</name> <value>数据库密码</value> //123 <description>password to use against metastore database</description></property><property><name>hive.exec.local.scratchdir</name> #指定HDFS中Hive数据临时文件存放目录,启动hive,HDFS自动创建。 <value>/tmp</value> 默认位置 <description>Local scratch space for Hive jobs</description> </property><property>#指定HDFS中Hive数据文件存放目录,启动hive,HDFS自动创建。 <name>hive.metastore.warehouse.dir</name> <value>/usr/hive/warehouse</value> <description>location of default database for the warehouse</description> </property><property><name>hive.downloaded.resources.dir</name> <value>/tmp/resources</value> 默认位置 <description>Temporary local directory for added resources in the remote file system.</description></property><property> <name>hive.metastore.local</name> <value>true</value></property>
配置完毕
5.将JDBC复制到Hive库目录用于java程序与mysql的连接
下载地址
http://download.softagency.net/MySQL/Downloads/Connector-J/
解压后将Jar文件复制转发
cp mysql-connector-java-5.1.34.jar /usr/local/hive-2.1.0/lib
[注意]用的是5.1,测试用6.0.1时测试失败。
6.初始化数据库
schematool -initSchema -dbType mysql
初始化失败则去数据库删除database和用户,重新建立
mysql -u root -p
密码
Delete FROM user Where User=’test’ and Host=’localhost’;
flush privileges;
drop database testDB; //删除用户的数据库
删除账户及权限:
drop user 用户名@’%’;
drop user 用户名@ localhost;
7启动hadoop然后在bin下键入hive
验证部署成功
8.日志
hive默认错误日志不线索在console中,日志保存在/tmp/user.name>/hive.log文件夹中。
四.job测试Hive集群
1.本地建立测试文件
santiago@hdp:~/data$ mkdir hivesantiago@hdp:~/data/hive$ vim hive_text.txtsanti,you are a zhazha.santiago@hdp:~/data/hive$ cat hive_text.txtsanti,you are a zhazha.
2.
hive> show databases;OKdefaultTime taken: 1.706 seconds, Fetched: 1 row(s)hive> create table guo_test(Name string,String string) > row format delimited > fields terminated by ',' > stored as textfile > ;
是张空表
载入本地数据,并在hive中查该表。是否存入数据。
hive>load data local inpath '/home/santiago/data/hive/hive_test.txt' into table guo_test;hive> select * from guo_test;hive>dfs -ls /usr/hive/warehouse/guo_test;
//表名在hdfs上就形成文件夹
3观察HDFS上文件
#hadoop fs -ls /usr/hive/warehouseFound 1 itemsdrwxrwxr-x - santiago supergroup 0 2017-01-14 21:13 /usr/hive/warehouse/guo_test
发现hive-site,xml设置的文件存储位置中多了guo_test这个文件夹(hive中的表)
#hadoop fs -ls /usr/hive/warehouse/guo_testFound 1 items-rwxrwxr-x 1 santiago supergroup 24 2017-01-14 21:13 /usr/hive/warehouse/guo_test/hive_test.txt
并在该文件夹中找到了所写入hive数据仓库的文件。
附录一:错误分析
错误1
Caused by: MetaException(message:Hive metastore database is not initialized. Please use schematool (e.g. ./schematool -initSchema -dbType …) to create the schema. If needed, don’t forget to include the option to auto-create the underlying database in your JDBC connection string (e.g. ?createDatabaseIfNotExist=true for mysql))
解决方案
重启数据库 ./schematool -initSchema -dbType mysql
参考:http://blog.csdn.net/beidiqiuren/article/details/53056270
错误2
Caused by:
java.net.URISyntaxException:Relative path in absolute URI:
{system:java.io.tmpdir%7D/%7Bsystem:user.name%7D
解决方案
需要建立临时IO的tmp文件文件,并进行配置
mkdir -p tmp/resources
http://宋亚飞.中国/post/36
附录二:参考文献
http://blog.csdn.net/cuihaolong/article/details/52038543
http://blog.csdn.net/jdplus/article/details/46493553
http://www.jianshu.com/p/34d89d6aa3d4
http://blog.itpub.net/28929558/viewspace-1192693/
http://blog.csdn.net/lifuxiangcaohui/article/details/40588929
http://blog.csdn.net/gyunling/article/details/8658083
http://blog.csdn.net/eashion1994/article/details/52056300
http://blog.csdn.net/beidiqiuren/article/details/53056270
关于数据存储部分的参考文献
http://blog.csdn.net/gyunling/article/details/8658083
http://blog.csdn.net/lifuxiangcaohui/article/details/40588929
http://blog.csdn.net/f328310543/article/details/42682685
- Hive总结(一)Hive 2.1.0本地模式搭建教程
- hive (本地模式)
- Hive总结(一)hive初始
- Hive总结(一)hive初始
- Hive总结(一)hive初始
- Hive总结(一)hive初始
- Hive总结(一)hive初始
- Hive总结(一)hive初始
- Hive教程(一) Hive入门教程
- Hive UDF教程(一)
- hive使用本地模式
- hive 使用本地模式
- Hive本地模式安装
- hive 开启本地模式
- hive中的本地模式
- Hive安装本地模式
- Hive本地模式
- Hive 本地环境搭建(mysql)
- 【Python】使用skimage完成二值图像连通区域标记及属性提取
- 神奇的枚举代码
- VR设备与软件的整合
- 浅谈 C++ 中的 new/delete 和 new[]/delete[]
- 第一个只出现一次的字符
- Hive总结(一)Hive 2.1.0本地模式搭建教程
- Android 子线程更新UI界面
- CSS 简单学习 篇
- js模块化编程二:require.js的介绍
- HTTP 协议详解
- BroadcastReceiver入门(一)——广播发送与接收
- 如何将人物照片眼睛放大的PS技巧
- C语言 atof()的实现
- jdbc连接数据库