大数据学习[04]:Hive安装配置
来源:互联网 发布:mysql 连接127.0.0.1 编辑:程序博客网 时间:2024/06/06 13:10
摘要:hive的安装,可能遇到问题及解决;提及一些hive元数据;提及了一下内外部表。
前置
linux集群系统配置:[1] 大数据学习前夕[01]:系统-网络-SSH
hadoop集群环境:[2] 大数据学习[02]:hadoop安装配置
安装mysql并配置好用户(这个必须要安装与配置的):[3]大数据学习前夕[04]:Mysql安装[Hive]
下载
[hadoop@hadoop01 ~]$ wget http://www-eu.apache.org/dist/hive/hive-1.2.2/apache-hive-1.2.2-bin.tar.gz
解压
[hadoop@hadoop01 ~]$ tar vxzf apache-hive-1.2.1-bin.tar.gz
配置
[hadoop@hadoop01 conf]$ cp hive-env.sh.template hive-env.sh
#增加hadoop_home:export HADOOP_HOME=/home/hadoop/hadoop
修改hive-site.xml
[hadoop@hadoop01 conf]$ vim hive-site.xml
<configuration> <property> <name>hive.metastore.uris</name> <value>thrift://hadoop01:9083</value> </property> <property> <name>hive.metastore.warehouse.dir</name> <value>/user/hive/warehouse</value> </property> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://hadoop01:3306/hive?createDatabaseIfNotExist=true&characterEncoding=UTF-8</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>AAAaaa111</value> </property></configuration>
配置一下HIVE的环境变量
[hadoop@hadoop01 conf]$ sudo vim /etc/profile[hadoop@hadoop01 conf]$ source /etc/profile
lib目录下增加一个mysql-connector-java-5.1.6.jar驱动;
复制
scp -r apache-hive-1.2.1-bin hadoop@hadoop02:~/scp -r apache-hive-1.2.1-bin hadoop@hadoop03:~/
启动hive
启动方法1:hive --service metastore &或启动方法2:nohup hive --service metastore -v &
启动报错:
这个因为数据库中有root@hadoop01没有密码引起的,把没有密码的删除了就可以了。
解决方法:把mysql里root用户没有密码全删除了,参见大数据学习前夕[04]:Mysql安装[Hive]。
创建表
在命令行输入hive就打印相应日志,接着就进入hive shell界面。
创建一张伪表dual
CREATE TABLE IF NOT EXISTS `dual` ( `name` string)
创建一个文件/home/hadoop/dual,在里面写一些字符串;为dual的插入作准备;
hive> load data local inpath '/home/hadoop/dual' into table dual;
可以看到数据加载入其中了,里面的基本操作命令与mysql差多,不过,HSQL没有insert into…value这样的方法,一般都是采用文件加载,或从别的表查询来更新的。
构造自己的插入方法
创建测试表student
CREATE TABLE student(`student_id` string,`student_name` string) COMMENT 'This is the student table' partitioned by(`born` string,`sex` int)ROW FORMAT DELIMITEDFIELDS TERMINATED BY ',' stored AS ORC;
编写自己的插入SQL
INSERT OVERWRITE TABLE student05 PARTITION (born = '2015-07-08',sex = 0)SELECT 'dlmu_01' as student_id,'happyprince' as student_nameFROM duallimit 1;
可能会遇到的问题
上面的创建表有可能会出现:Specified key was too long; max key length is 767 bytes 这样的错误; 文章hive创建表错误[ Specified key was too long]具体处理解决方法:
第一步:查看数据库的字符
mysql> show variables like '%char%';mysql>alter database 库名 character set latin1;
再操作创建表,查看是否还是报错,如果还是报同样的错误,接着第二步;
第二步:直接把数据库给删了
第三步:配置了mydql文件:把字符集都设置成了latin1;
[root@hadoop01 ~]# vi /etc/my.cnf[mysqld]character-set-server=latin1lower_case_table_names=1datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockuser=mysql# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0[mysqld_safe]log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid[client]default-character-set=latin1[mysql]default-character-set=latin1
第四步:重启MYSQL; 重启HIVE;
这个是mysql的字符集问题,还未来得及深入研究,先这样处理,有知道好方法的请指教!
hive元数据
进入mysql,打开hive数据库,show tables;
看几个表:
version表
mysql> select * from version;+--------+----------------+-----------------------------------------+| VER_ID | SCHEMA_VERSION | VERSION_COMMENT |+--------+----------------+-----------------------------------------+| 1 | 1.2.0 | Set by MetaStore hadoop@192.168.137.101 |+--------+----------------+-----------------------------------------+VER_ID:ID主键;SCHEMA_VERSION :Hive版本;VERSION_COMMENT:版本说明有时数据异常了,会修改这个表的内容,所以当hive由于版本问题启动不了时,可以来这里看看。
数据库表[DBS,DATABASE_PARAMS]
mysql> select * from dbs;
[一起学Hive]之十四-Hive的元数据表结构详解说明得比较全;
- Hive表和视图相关的元数据表
主要有TBLS、TABLE_PARAMS、TBL_PRIVS,这三张表通过TBL_ID关联。 - Hive文件存储信息相关的元数据表
主要涉及SDS、SD_PARAMS、SERDES、SERDE_PARAMS
由于HDFS支持的文件格式很多,而建Hive表时候也可以指定各种文件格式,Hive在将HQL解析成MapReduce时候,需要知道去哪里,使用哪种格式去读写HDFS文件,而这些信息就保存在这几张表中。 - Hive表字段相关的元数据表
主要涉及COLUMNS_V2 - Hive表分区相关的元数据表
主要涉及PARTITIONS、PARTITION_KEYS、PARTITION_KEY_VALS、PARTITION_PARAMS
等等。。。
hive内部表与外部表
内部表:数据与元数据都要管。创建时,会把数据移动hive数据仓库指定的位置,删除时会把数据与记录的位置一起删;
外部表:只管元数据,不管数据;创建时,要指定一个数据路径,hive不会管你的数据在哪里,也不会移动它,只是记录路径,删除时,也只是删除路径,数据不管。
参考引用
[1] 大数据学习前夕[01]:系统-网络-SSH
[2] 大数据学习[02]:hadoop安装配置
[3]大数据学习前夕[04]:Mysql安装[Hive]
[4][一起学Hive]之十四-Hive的元数据表结构详解
【作者:happyprince, http://blog.csdn.net/ld326/article/details/78023101】
- 大数据学习[04]:Hive安装配置
- 大数据学习前夕[04]:Mysql安装[Hive]
- 大数据学习之Hive的安装
- 大数据学习第一弹你懂的之Hive升级到2.1安装配置全过程
- 4大数据实战系列-hive安装配置优化
- (大数据之hive)hive安装
- 大数据之hive安装
- 大数据生态系统基础: HIVE(一):HIVE 介绍及安装、配置
- 大数据(十八)Hive【Hive安装配置(本地derby模式)】
- 大数据 (十九)Hive【Hive安装配置(本地数据库模式)】
- 大数据(二十)Hive【Hive安装配置(远端数据库模式)】
- 大数据开发学习平台安装配置
- 大数据学习[02]:hadoop安装配置
- 大数据学习[03]:hbase安装配置
- 大数据的仓库Hive学习(一)
- 大数据学习12:Hive环境搭建
- 大数据--hive学习(1)--hive的简单认识
- hive安装、配置 mysql存储元数据
- 计算机组成原理与体系结构---Flynn分类法
- 第三方jquery CDN载入错误加载本地文件
- VMware中安装Linux 为什么使用NAT方式
- jdbc如何操作事务
- oracle数据库是什么?怎么用?
- 大数据学习[04]:Hive安装配置
- topological sorted
- HD-6216-A Cubic number and A Cubic Number
- JavaScript for循环和for循环嵌套
- HTML5 CSS3专题 纯CSS打造相册效果
- python编程中的if __name__ == 'main': 的作用和原理
- 欢迎使用CSDN-markdown编辑器
- Python爬虫利器之Beautiful Soup的用法
- 使用List<Map>或者List<entityObject>计算指定属性的总和