设为首页 收藏本站
查看: 810|回复: 0

[经验分享] hive的基本概念和安装

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-11-26 08:44:35 | 显示全部楼层 |阅读模式
背景:
NoSQL运动, Not Only SQL
New SQL, SQL的逆袭
放弃SQL是最大的错误
Hive还不算是完整的数据库系统
Hive很缓慢
应用于即席查询场景

Hive:
数据仓库工具, 可以把Hadoop下的原始结构化数据变为Hive中的表
支持一种与SQL几乎完全相同的语言HiveQL.  除了不支持更新, 索引和事务, 几乎SQL的其他特征都能支持
可以看成是从SQL到Map-Reduce的映射器
提供shell, JDBC/ODBC, Thrift, Web等接口

Hive简介
起源自facebook由Jeff Hammerbacher领导的团队
构建在Hadoop上的数据仓库框架
设计目的是让SQL技能良好, 但Java技能较弱的分析师可以查询海量数据
2008年facebook把hive项目贡献给Apache

Hive的组件与体系架构
用户接口 : shell, thrift, web等
Thrift服务器
元数据库 "Derby, Mysql等
解析器
Hadoop

Hive安装
内嵌模式: 元数据保持在内嵌的Derby模式, 只允许一个会话连接
本地独立模式: 在本地安装MySQL, 把元数据放到MySQL内
远程模式: 元数据放置在远程的MySQL数据库


内嵌模式安装下载并解压Hive
1
2
3
wget http://apache.dataguru.cn/hive/s ... e-0.13.1-bin.tar.gz
tar xf apache-hive-3.13.1-bin.tar.gz
cd apache-hive-0.13.1-bin




设置环境变量
1
2
3
4
5
6
7
[hadoop@hadoop1 apache-hive-0.13.1-bin]$ cd conf/
[hadoop@hadoop1 conf]$ cp hive-env.sh.template hive-env.sh
[hadoop@hadoop1 conf]$ cp hive-default.xml.template hive-site.xml

vi hive-env.sh
HADOOP_HOME=/home/hadoop/hadoop-2.5.0
export HIVE_CONF_DIR=/home/hadoop/apache-hive-0.13.1-bin/conf



hive-site的主要配置
1
2
3
4
hive.metastore.warehouse.dir     HDFS上的数据目录
hive.exec.scratchdit             HDFS上的临时目录
hive.metastore.warehouse.dir     默认值是/usr/hive/warehouse
hive.exec.scratchdig             默认值是/tmp/hive-${user.name}




运行Hive
1
2
[hadoop@hadoop1 conf]$ hive
hive>




简单建删表测试
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
hive1> show tables;
OK
Time taken: 0.042 seconds
hive1> create table abc(c1 string);
OK
Time taken: 0.84 seconds
hive1> show tables;
OK
abc
Time taken: 0.073 seconds, Fetched: 1 row(s)
hive1> select * from abc;
OK
Time taken: 0.459 seconds
hive1> drop table abc;
OK
Time taken: 2.805 seconds




Hive数据存放在
1
[hadoop@hadoop1 hadoop-2.5.0]$ hadoop fs -ls /user/hive/warehouse





独立模式安装
1. hive安装在hadoop.client
2. 解压缩安装在/home/hadoop

配置
1
2
3
[hadoop@hadoop1 ~]$ tar xf apache-hive-0.13.1-bin.tar.gz
[hadoop@hadoop1 ~]$ mv apache-hive-0.13.1-bin hive-0.13.1
[hadoop@hadoop1 ~]$ cd hive-0.13.1/



编辑hive-env.sh
[hadoop@hadoop1 hive-0.13.1]$ cp conf/hive-env.sh.template conf/hive-env.sh[hadoop@hadoop1 hive-0.13.1]$ vi  conf/hive-env.shHADOOP_HOME=/home/hadoop/hadoop-2.5.0
编辑hive-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[hadoop@hadoop1 hive-0.13.1]$ cp conf/hive-default.xml.template conf/hive-site.xml
[hadoop@hadoop1 hive-0.13.1]$ vim conf/hive-site.xml
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property>

<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?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>hadoop</value>
</property>

<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hadoop</value>
</property>



lib文件夹缺少mysql的连接器mysql-connector-java-5.1.25-bin.jar,下载地址http://download.iyunv.com/detail/xqj198404/6338973
安装MySQL:
1
2
3
4
5
6
7
8
9
[iyunv@hadoop1 ~]# yum install mysql-server mysql -y
[iyunv@hadoop1 ~]# service mysqld start
[iyunv@hadoop1 ~]# mysql

mysql> create database hive;
Query OK, 1 row affected (0.00 sec)

mysql> grant all on hive.* to 'hadoop'@'localhost' identified by 'hadoop';
Query OK, 0 rows affected (0.00 sec)





修改/homehadoop/.bash_profile
1
2
3
4
5
6
7
8
9
10
JAVA_HOME=/usr/java/jdk1.7.0_67
HADOOP_HOME=/home/hadoop/hadoop-2.5.0
HIVE_HOME=/home/hadoop/hive-0.13.1

PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin

export JAVA_HOME
export HIVE_HOME
export HADOOP_HOME
export PATH





启动Hive并测试
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[hadoop@hadoop1 ~]$ hive
hive> show tables;
OK
Time taken: 1.773 seconds
hive> create table abc(aa string);
OK
Time taken: 1.571 seconds
hive> show tables;
OK
abc
Time taken: 0.076 seconds, Fetched: 1 row(s)
hive> drop table abc;
OK
Time taken: 1.801 seconds





JDBC方式连接Hive
1. 使用jdbc的方式链接Hive, 首先做的事情就是需要启动hive的Thift Server, 否则连接hive的时候会报connection refused的错误.
启动命令    hive --service hiveserver
2. 新建java项目, 然后将hive/lib下的所有jar包和hadoop核心的jar包 添加到项目的类路径上

Hive的数据
数据在HDFS的warehouse目录下, 一个表对应一个子目录
桶与reduce
本地的/tmp目录存放日志和执行计划




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-33743-1-1.html 上篇帖子: Hadoop 2.x 快照 下篇帖子: Hbase概念
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表