千家信息网

Hive的安装与MySQL结合

发表于:2024-11-24 作者:千家信息网编辑
千家信息网最后更新 2024年11月24日,#HIVE可以在任意节点搭建,实验在master链接:http://pan.baidu.com/s/1i4LCmAp 密码:302x hadoop+hive下载##原封不动的复制,必死无疑,请根据实际
千家信息网最后更新 2024年11月24日Hive的安装与MySQL结合

#HIVE可以在任意节点搭建,实验在master

链接:http://pan.baidu.com/s/1i4LCmAp 密码:302x hadoop+hive下载

##原封不动的复制,必死无疑,请根据实际填写相关参数和路径

1、 Hive的基础设施

a、基于已经搭建好的hadoop

b、下载hive版本,注意和hadoop对应起来

2、安装hive

a、下载好的包解压到/usr/local/命名为hive


tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /usr/local

cd /usr/local

mvapache-hive-1.2.1-bin hive

b、设置环境变量

vim/etc/profile

exportHIVE_HOME=/usr/local/hive

exportHIVE_CONF_DIR=/usr/local/conf

exportPATH=$PATH:$HIVE_HOME/bin

exportHIVE_LIB=$HIVE_HOME/lib

到此就可以启动hive

[root@mycat ~]# hive

Logging initialized using configuration injar:file:/usr/local/hive/lib/hive-common-1.2.1.jar!/hive-log4j.properties

hive> show databases;

OK

default

Time taken: 1.096 seconds, Fetched: 1row(s)

默认情况下,Hive元数据保存在内嵌的Derby 数据库中,只能允许一个会话连接,只适合简单的测试。为了支持多用户多会话,则需要一个独立的元数据库,我们使用 MySQL 作为元数据库,Hive 内部对 MySQL 提供了很好的支持。

二、使用MySQL存储元数据

1、启动mysql5.6版本(操作过程略)

2、配置hive文件,配置文件在/usr/local/hive/conf/目录下有.template的模板文件,复制为hive-env.sh

[root@mycat conf]# cp hive-env.sh.templatehive-env.sh

[root@mycat conf]# vim hive-env.sh

##这里的配置和/etc/profile重复,可以不配置,配置环境变量即可

1、环境变量

exportHADOOP_HEAPSIZE=1024

HADOOP_HOME=/usr/local/hadoop

export HIVE_CONF_DIR=/usr/local/hive/conf

export HIVE_AUX_JARS_PATH=/usr/local/hive/lib

2、复制一个从模版文件复制一个hive-site.xml的文件

cp /usr/local/hive/conf/hive-default.xml.template ./hive-site.xml

通过name标签里的值找到value,修改值,配置文件下载:

http://down.51cto.com/data/2260702

##原封不动的复制,必死无疑,请根据实际填写相关参数和路径,标记红色的注意修改自己的实际

hive.metastore.warehouse.dir

/home/hive/warehouse

javax.jdo.option.ConnectionURL

jdbc:mysql://192.168.1.108:3306/hive?characterEncoding=UTF-8

#需要在数据库里添加存储元数据的库

javax.jdo.option.ConnectionUserName

hive

javax.jdo.option.ConnectionPassword

mysql

##连接数据库的用户名和密码,授权用户名和密码

hive.hwi.listen.port

9999

hive.exec.local.scratchdir

/home/hive

hive.downloaded.resources.dir

/home/hive/tmp

hive.querylog.location

/home/hive

配置输出的日志信息

hive.log.dir=/home/hive

hive.log.file=hive.log

log4j.appender.EventCounter=org.apache.hadoop.log.metrics.EventCounter

3、 根据配置创建HIVE存储数据的目录

mkdir /home/hive/tmp -p

4、 配置jdbc连接器

1、下载包并解压

2、拷贝mysql-connector-java-5.1.6-bin.jar 到hive 的lib下面

若在操作删除表的时候发现提示:

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException

则需要替换mysql-connector-java包的版本

链接:http://pan.baidu.com/s/1qXIGeSG 密码:iykt 下载包

cp mysql-connector-java-5.1.6-bin.jar /usr/local/hive/lib/

页面提示

http://192.168.1.114:50070/explorer.html#/home提示这个需要修改

Permission denied: user=dr.who, access=READ_EXECUTE,inode="/home":root:supergroup:drwx-wx-wx

在vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml添加如下,后重启

dfs.permissions.enabled

false

#配置完这些把namenode节点重启生效

测试hive操作可以在mysql显示及在HADOOP页面也能展示出来

登陆hive

  1. 5.2创建内部表
    内部表特点:数据加载到内部表中是,如果数据在本地会在将本地数据拷贝一份到内部LOCATION指定的目录下,如果数据在hdfs上,则会将hdfs中的数据mv到内部表指定的LOCATION中。删除内部表时,会删除相应LOCATION下的数据。

create table neibu_table(id int);

show tables #进行查看

hive在hdfs中的默认位置是/user/hive/warehouse,该位置可以修改,是由配置文件hive-site.xml中属性hive.metastore.warehouse.dir决定的,会在/home/hive/warehouse/testdb.db下创建student目录。
通过浏览器可以查看

先来说下Hive中内部表与外部表的区别:(重点)

1)创建表时:创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径, 不对数据的位置做任何改变。

2)删除表时:在删除表的时候,内部表的元数据和数据会被一起删除, 而外部表只删除元数据,不删除数据。这样外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据。

另外需要注意的是传统数据库对表数据验证是 schema on write(写时模式),而 Hive 在load时是不检查数据是否符合schema的,hive 遵循的是 schema on read(读时模式),只有在读的时候hive才检查、解析具体的 数据字段、schema。
读时模式的优势是load data 非常迅速,因为它不需要读取数据进行解析,仅仅进行文件的复制或者移动。
写时模式的优势是提升了查询性能,因为预先解析之后可以对列建立索引,并压缩,但这样也会花费要多的加载时间。

1、内部表操作:

加载数据到表中方法:

##注意aa文件的数据要先创建好

hive> LOAD DATA LOCAL INPATH '/home/aa'INTO TABLE neibu_table;

Loading data to table default.neibu_table

Table default.neibu_table stats: [numFiles=1, totalSize=10]

OK

Time taken: 0.639 seconds

Select * from neibu_table

使用select* 不加条件时,不执行MapReduce,执行比较快;最后一行显示的是null,原因是文件中有一行空格;

注意:内部表会将数据拷贝一份到表目录下面,如果删除内部表元数据,那么该元数据下面的数据也会被删除;

第二种加载数据到student中的方法
注意bb.txt文件的路径,并写入一列数字;
执行命令hadoop fs -put bb.txt /home/hive/warehouse/neibu_table或者 hdfsdfs -put t /home/hive/warehouse/neibu_table

添加一个库:create database hive20161120

2、分区表:将每个小时或每天的日志文件进行分区存储,可以针对某个特定时间段做业务分析,而不必分析扫描所有数据;

创建表a20161120,有多个列的情况创建表,指定分隔符为\t

创建分区表:


CREATE TABLE fenqu(id int) PARTITIONED BY (d int);

LOAD DATA LOCAL INPATH 'bb.txt INTO TABLE fenquPARTITION (d=1);
LOAD DATA LOCAL INPATH 'bb2.txt' INTO TABLE fenquPARTITION (d=2);

3、 桶表
(表连接时候使用,根据桶的个数进行取模运算,将不同的数据放到不同的桶中)
创建桶类型的表
create table student4(id int) clustered by(id)into 4 buckets;
必须启用桶表
set hive.enforce.bucketing = true;
插入数据,这里并没有使用load,而是用的insert,insert加载数据使用了mapreduce。
insert into table student4 select id fromstudent3;

在hive 添加的表可以在mysql查看他的元数据信息,在配置问建立定义的库下记录所有所有相关的记录

Eg:select * from TBLS;

4、外部表:

导入数据和内部表一样 ,这里不做重复

hive> drop table outer_table;

OK

Time taken: 0.081 seconds

hive> show tables;

OK

Time taken: 0.023 seconds

hive> create external table outer_table(id int)

> ;

OK

Time taken: 0.037 seconds

hive> select * from outer_table

> ;

OK

1

2

3

4

5

6

7

8

9

10

Time taken: 0.044 seconds, Fetched: 10 row(s)


数据 文件 配置 数据库 目录 路径 密码 时候 模式 存储 位置 变量 实际 拷贝 版本 环境 用户 提示 不同 原封不动 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 打电话为什么会服务器繁忙 瓦里安加速器服务器 上海雨人公司软件开发公司 最顶尖的互联网科技 我国两大征信数据库 三级网络技术考试题 人工智能怎么保持网络安全 德宏服务器上门回收多少钱 东莞市都去网络技术有限公司 女人40岁做软件开发 数据库创建子账户语句 绵阳市网络安全工作责任实施办法 服务器六大安全问题综合分析 东莞云软件开发咨询 pdb 数据库 软件开发 层 比较好的个人云服务器 深圳饶氏软件开发有限公司 怎么从年鉴批量导出数据库 北京博学互联网教育科技公司 港版ipad和国行服务器 影像数据库有东西读不出来 邯郸专业存储服务器公司 三级网络技术考试题 数据库相关软件开发工具 网易版我的世界服务器32k指令教程 pcba给到软件开发 校园网络安全防护教育 中天钢铁移动办公服务器地址端口 戴尔服务器远程管理卡设置
0