hive 搭建
Hive
hive是简历再hadoop上的数据库仓库基础架构,它提供了一系列的工具,可以用来进行数据提取转化
加载(ETL),这是一种可以存储,查询和分析存储再hadoop种的大规模数据机制,hive定义了简单的类sql
查询语音,称为QL,它允许熟悉sql的用户查询数据,同时, 这个语言也允许熟悉mapreduce开发者的开发
自定义的mapper和 reducer 来处理内建的mapper和reducer无法完成的复杂的分析工作
数据库:关系型数据库 和 非关系型数据库 可以实时进行增删改查操作
数据仓库: 存放大量数据,可以对仓库里数据,进行计算和分析,弱点:不能实时更新,删除
Hive 是sql解析引擎,它将sql语句转译成M/R job,然后再haoop上执行
Hive的表其实你一直HDFS的目录/文件夹,按表名把文件夹分开,如果是分区表,则分区值是子文件夹,
可以直接在M/R job里使用这些数据
Hive的系统架构
用户接口主要有三个: CLI , ODBC/JDBC . WebUI
1 cli, 即shell 命令行
2. JDBC/ODBC 是Hive的java
3. WEBUI是通过浏览器访问Hive
Hive 将元数据存储再数据库中的 metastore,并没有保存计算的数据,要计算的数据都保存在hdfs中,只保存的表的信息,表的名字,表有几个列,这个表处理的那条数据,表的描述信息, 目前只支持mysql、derby
Hive中的元数据包括表的名字, 表的列和分区及其属性,表的属性,表的数据所在目录等
解释器、编译器、优化器完成HQL查询语句从词法分析、语法分析、 编译、优化以及查询计划的生成,
生成的查询计划存储再HDDS中, 并在随后在mapreduce调用执行。
Hive的数据存储再HDFS中,大部分的查询由mapreduce完成。
Hive 既要依赖 hdfs,也要依赖yarn
derby数据库不支持多个连接
cd /data/hive/bin
./hive
hive>show databases
hive>show tables
hive>create table student(id int,name string)
hive>show create table student
cat /root/1.txt
1 feng
2 su
3 li
空行
#hive从本地加载/root/1.txt,并且导入到sutdent表中
hive>load data local inpath '/root/1.txt' into table student
查询student表数据,显示4行数据,但是都为NULL, 因为列与列之间没有分隔符, 显示2列,是应为,创建表时,有2列。
hive> select * from student;
NULL NULL
NULL NULL
NULL NULL
NULL NULL
统计student 行总数,调用mapreduce。
hive> select count(*) from student;
创建 teacher, 以\t 为分隔符。
hive>create table teacher (id bigint,name string) row format delimited fields terminated by '\t'
hive>show create table teacher
hive>select * from teacher;
hive>seley * from teacher order by id desc;
创建库
hive>create database feng;
hive>use feng;
hive>show tables;
hive>create table user (id int, name string)
metastore 保存的位置,在/data/hive/bin 目录下 derby数据名称 metastore_db,
如果metastore_db 再当前路径下只支持一个连接,
在那个目录下 运行的 hive命令,就在那个目录下 生成metastore_db,不同路径下的metastore_db,显示的库不同。
使用mysql作为 meastore 存储路径
1 删除derby 在hdfs生成的库删除
hdfs dfs rm -rf /user/hive
2. 配置hive
[root@hive1 conf]# vim hive-env.sh
HADOOP_HOME=/data/hadoop
[root@hive1 conf]# cp hive-default.xml.template hive-site.xml
<!--
<property>
<name>hive.metastore.warehouse.dir</name>
<value>hdfs://ns1/hive/warehousedir</value>
</property>
<property>
<name>hive.exec.scratchdir</name>
<value>hdfs://ns1/hive/scratchdir</value>
</property>
<property>
<name>hive.querylog.location</name>
<value>/data/hive/logs</value>
</property>
-->
<!--连接192.168.20.131 mysql数据库,如果hive没有,则创建 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.20.131:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<!--mysql odbc驱动 -->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!--mysql 用户名 -->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!--mysql 密码 -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<property>
<name>hive.aux.jars.path</name>
<value>file:///data/hive/lib/hive-hbase-handler-2.1.0.jar ,file:///data/hive/lib/protobuf-java-2.5.0.jar,file:///data/hive/lib/hbase-client-1.1.1.jar,file:///data/hive/lib/hbase-common-1.1.1.jar,file:///data/hive/lib/zookeeper-3.4.6.jar</value>
</property>
<!--
<property>
<name>hive.metastore.uris</name>
<value>thrift://192.168.20.96:9083</value>
</property>
-->
在 Hive 中创建表之前需要使用以下 HDFS 命令创建 /tmp 和 /user/hive/warehouse (hive-site.xml 配置文件中属性项 hive.metastore.warehouse.dir 的默认值) 目录并给它们赋写权限
[root@hive1 ~]# hadoop fs -mkdir -p /hive/scratchdir
[root@hive1 ~]# hadoop fs -mkdir /tmp
[root@hive1 ~]# hadoop fs -ls /hive
[root@hive1 ~]# hadoop fs -chmod -R g+w /hive/
[root@hive1 ~]# hadoop fs -chmod -R g+w /tmp
拷贝 odbc驱动
cp mysql-connector-java-5.1.40-bin.jar /data/hive/lib
从 Hive 2.1 版本开始, 我们需要先运行 schematool 命令来执行初始化操作
[root@hive1 bin]# ./schematool -dbType mysql -initSchema
[root@hive1 bin]# chown -R hadoop.hadoop /data/hive
[root@hive1 data]# su - hadoop
[hadoop@hive1 bin]$ ./hive
启动成功
hive> create table people (id int,name string)
mysql中保存表的信息, hdfs 创建一个people文件夹
192.168.20.131 mysql 保存的元数据信息 mysql中显示结果
root@localhost:hive>select * from columns_v2;
+-------+---------+-------------+-----------+-------------+
| CD_ID | COMMENT | COLUMN_NAME | TYPE_NAME | INTEGER_IDX |
+-------+---------+-------------+-----------+-------------+
| 1 | NULL | id | int | 0 |
| 1 | NULL | name | string | 1 |
+-------+---------+-------------+-----------+-------------+
2 rows in set (0.00 sec)
root@localhost:hive>select * from tbls
-> ;
+--------+-------------+-------+------------------+--------+-----------+-------+----------+---------------+--------------------+--------------------+
| TBL_ID | CREATE_TIME | DB_ID | LAST_ACCESS_TIME | OWNER | RETENTION | SD_ID | TBL_NAME | TBL_TYPE | VIEW_EXPANDED_TEXT | VIEW_ORIGINAL_TEXT |
+--------+-------------+-------+------------------+--------+-----------+-------+----------+---------------+--------------------+--------------------+
| 1 | 1479804678 | 1 | 0 | hadoop | 0 | 1 | name | MANAGED_TABLE | NULL | NULL |
+--------+-------------+-------+------------------+--------+-----------+-------+----------+---------------+--------------------+--------------------+
1 row in set (0.00 sec)
指向了 hdfs 路径
root@localhost:hive>select * from sds
-> ;
+-------+-------+------------------------------------------+---------------+---------------------------+-------------------------------------+-------------+------------------------------------------------------------+----------+
| SD_ID | CD_ID | INPUT_FORMAT | IS_COMPRESSED | IS_STOREDASSUBDIRECTORIES | LOCATION | NUM_BUCKETS | OUTPUT_FORMAT | SERDE_ID |
+-------+-------+------------------------------------------+---------------+---------------------------+-------------------------------------+-------------+------------------------------------------------------------+----------+
| 1 | 1 | org.apache.hadoop.mapred.TextInputFormat | | | hdfs://ns1/user/hive/warehouse/name | -1 | org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat | 1 |
+-------+-------+------------------------------------------+---------------+---------------------------+-------------------------------------+-------------+------------------------------------------------------------+----------+
hive 搭建的更多相关文章
- 服务器Hadoop+Hive搭建
出于安全稳定考虑很多业务都需要服务器服务器Hadoop+Hive搭建,但经常有人问我,怎么去选择自己的配置最好,今天天气不错,我们一起来聊一下这个话题. Hadoop+Hive环境搭建 1虚拟机和系统 ...
- Hive搭建与简单使用
hive搭建与简单使用(1) 标签(空格分隔): hive,mysql hive相当于编译器的组件,他并不存储数据,元数据存储在mysql中,数据则存放在hdfs中,通过hive,可以利用sql语句对 ...
- 基于Docker搭建大数据集群(六)Hive搭建
基于Docker搭建大数据集群(六)Hive搭建 前言 之前搭建的都是1.x版本,这次搭建的是hive3.1.2版本的..还是有一点细节不一样的 Hive现在解析引擎可以选择spark,我是用spar ...
- 通过hadoop + hive搭建离线式的分析系统之快速搭建一览
最近有个需求,需要整合所有店铺的数据做一个离线式分析系统,曾经都是按照店铺分库分表来给各自商家通过highchart多维度展示自家的店铺经营 数据,我们知道这是一个以店铺为维度的切分数据,非常适合目前 ...
- 大数据学习系列之八----- Hadoop、Spark、HBase、Hive搭建环境遇到的错误以及解决方法
前言 在搭建大数据Hadoop相关的环境时候,遇到很多了很多错误.我是个喜欢做笔记的人,这些错误基本都记载,并且将解决办法也写上了.因此写成博客,希望能够帮助那些搭建大数据环境的人解决问题. 说明: ...
- Spark入门到精通--(第九节)环境搭建(Hive搭建)
上一节搭建完了Hadoop集群,这一节我们来搭建Hive集群,主要是后面的Spark SQL要用到Hive的环境. Hive下载安装 下载Hive 0.13的软件包,可以在百度网盘进行下载.链接: h ...
- 将hive搭建到spark上
1. 首先搭建好spark和hive,参见相关文档 2. 在spark/conf下创建hive-site.xml <configuration> <property> < ...
- CentOS下Hive搭建
目录 1. 前言 2. MySQL安装 2.1 更换yum下载源 2.2 开启MySQL远程登录 3. Hive安装 3.1 下载Hive 3.2 安装Hive和更改配置文件 4. MySQL驱动包的 ...
- hive搭建配置
下载cd /data0/software/hivewget http://mirror.bit.edu.cn/apache/hive/hive-0.12.0/hive-0.12.0-bin.tar.g ...
随机推荐
- 基于命令行编译打包phonegap for android应用 分类: Android Phonegap 2015-05-10 10:33 73人阅读 评论(0) 收藏
也许你习惯了使用Eclipse编译和打包Android应用.不过,对于使用html5+js开发的phonegap应用,本文建议你抛弃Eclipse,改为使用命令行模式,绝对的快速和方便. 一直以来,E ...
- thinphp下拉获取更多瀑布流效果
html页面 <body> <script type="text/javascript" src="jquery.min.js">< ...
- Android-组件RadioButton使用技巧
当初第一次接触Android组件的时候,我感觉微信底部的菜单,是用button这样的组件来做的. 可我想错了.却是用RadioButton来做的.那到底怎么做,接下来我就做一下分享!希望看了之后你也觉 ...
- Unity4.0的使用
最近公司用到了Unity,自己就研究了一下. 新建一个ASP.NET MVC基本项目,在NuGet上引入Unity4.0.1最新版. 因为我使用的项目为ASP.NET MVC,所以又添加一个Unity ...
- Leetcode Longest Common Prefix
Write a function to find the longest common prefix string amongst an array of strings. class Solutio ...
- [BZOJ1501][NOI2005] 智慧珠游戏
Input 文件中包含初始的盘件描述,一共有10行,第i行有i个字符.如果第i行的第j个字符是字母”A”至”L”中的一个,则表示第i行第j列的格子上已经放了零件,零件的编号为对应的字母.如果第i行的第 ...
- Java关键字
Java关键字简介 类别 关键字 说明 访问控制 private 私有的 protected 受保护的 public 公共的 类.方法和变量修饰符 abstract 声明抽象 class 类 exte ...
- [转]Flash Player、AIR、Flex SDK 大全
平时不断看到有朋友在各种论坛.空间.知道.群里求 Flash 平台各种版本的运行时(Flash Player)和SDK(Flex.AIR).今天就看到不下10次!所以决定把 Macromedia.Ad ...
- JAVA自定义异常
创建自定义异常是为了表示应用程序的一些错误类型,为代码可能发生的一个或多个问题提供新含义. 可区分代码运行时可能出现的相似问题的一个或多个错误,或给出应用程序中一组错误的特定含义. //自定义异常类需 ...
- mysql数据库封装
<?php /** * name: sql操作封装,可扩展 . * User: 张云山 * Date: 2016/9/4 * Time: 22:02 */ //php文件编码设置header(' ...