《OD学hive》第四周0717
一、Hive基本概念、安装部署与初步使用
1. 后续课程
Hive
项目:hadoop hive sqoop flume hbase
电商离线数据分析
CDH
Storm:分布式实时计算框架
Spark:
2. 如何学习大数据技术
上课时候,认真听,勤做笔记;
遇到难理解的概念,马上记录下来;
课后多动手,操作过程遇到问题,多思考;
不要遇到问题,首先就问别人;
珍惜问问题的机会;
讲究问题的技巧与方式,提出自己的大概思考思路;
多总结:
总结成文档,作为以后的参考;
归档成自己的知识库;
每个技术框架:
参考资料:参考官网,不要依赖其他人的博客;
二、大数据技术框架
1. 数据存储: HDFS(基于磁盘)、Tachyon(基于内存)
一般会把Tachyon架构在HDFS与计算框架之间,一些不需要落地到HDFS磁盘上的数据,
落地到内存中,达到共享内存的目的;
2. 数据分析:
MapReduce:离线批处理计算框架
YARN:任务的分配和资源的管理,大数据的操作系统
Hive: Facebook为了解决海量结构化的日志数据分析;
Storm:
Spark:
Spark core
Spark Streaming
Spark SQL
Spark MLlib 机器学习类库
Spark GraphX 图计算
3. 数据高效实时查询:
HBase: NoSQL基于列存储的分布式数据库
ElasticSearch:搜索引擎
Solr:搜索引擎
4. 数据应用:
搜索引擎、推荐系统、机器学习(人工智能)
精准广告、游戏分析(玩家留存)、
公安系统(疑犯追踪)
交通部门(路况分析、路况预测、频发车祸路段检测)
5. 数据可视化
web项目
三、Hive介绍
Apache基金会组织
一个用类似SQL语句来读、写、管理存储在分布式存储设备(HDFS、HBase)上的大数据集的数据仓库框架。
hive分为以下部分:
(1)hive的数据是存储在hdfs上
(2)hive是以sql的方式来读写管理数据
底层实现:将sql语句转换成一个个Mapreduce Job
(3)hive将数据映射成表
表的元数据信息:表名称、表所属数据库、表的所属者、创建时间、最后访问时间、保护模式、retention
location(hive这张表的数据存储在hdfs的哪个位置)、表类型(内部表,外部表)、标的存储格式信息、表的结构信息(表有哪些字段)、每个字段类型
hive
showdatabases;
create table docs;
show tables;
load data local input "path" overwirte into table docs;
describe formatted;
hive表的元数据信息:通过关系型数据库进行存储,内嵌derby、MySQL
如何保证hive表元数据的安全性问题?
MySQL主从备份
(4)hive驱动引擎: Driver
引擎:
解释器:SQL 解释 抽象语法书AST
编译器:将AST编译成逻辑执行计划
优化器:优化逻辑执行计划
执行器:调用底层运行框架执行逻辑执行计划,即将逻辑执行计划转成物理执行计划
运行框架:MapRedcue、Spark(SparkSQL)
四、Hive的优点:
1. 通过sql分析大数据,只要会sql就行,就比较容易上手
DBA:擅长sql,不擅长编程
2. 不再需要编写mapreduce应用程序
3. hive表的元数据信息可以统一管理,与其他框架共享
impala 速度比hive快,但是不稳定,支持函数没有hive多
4. 容易拓展
(1)集群部署:数据是存储在hdfs上,只要拓展hdfs就行;
(2)通过show functions;查看hive自带的函数,195个函数(0.13.1)
自定义函数:通过编写UDF(user definded function)
五、hive的应用场景:
(1)离线批处理 ——日志分析
(2)高延迟场景,对实时性要求不高的场景
Storm
Spark Streaming
(3)适合处理大数据集,不适合处理小数据集
六、Hive技术框架与各组件
HDFS:分布式数据存储
Driver引擎: 解释器、编译器、优化器、执行器
MySQL: 存储hive表的元数据信息
Client: cli(命令行交互式窗口)、hiveserver2(jdbc/odbc,用到Thrift)、hwi(升级版hue)
备注: Thirft:不同语言之间的转换器
七、安装部署
任何大数据组件:安装部署一定要参考官网。
http://hive.apache.org/
https://cwiki.apache.org/confluence/display/Hive/GettingStarted
1. 安装前提条件是什么?
网络配置、主机名与网络IP的映射、防火墙(学些环境暴力直接关闭,生产环境申请开墙、配置防火墙策略)
JDK1.7 hadoop 2.x 操作系统:Linux
Apache版本:
archive.apache.org/dist
CDH版本:
archive.cloudera.com/cdh5/cdh/5
2. 修改配置
cp hive-env.sh.template hive-env.sh
cp hive-default.xml.template hive-site.xml
cp hive-exec-log4j.properties.template hive-exec-log4j.properties
cp hive-log4j.properties.template hive-log4j.properties
bin/hive
export JAVA_HOME=/opt/modules/jdk1.7.0_67
2783:3 缺少<property>
继续执行bin/hive
bin/hive --service metastore
3. 安装mysql
yum -y install mysql-server
安装的版本是5.1.17
sudo rpm -Uvh mysql57-community-release-el6-8.noarch.rpmcd /etc/yum.repos.d/
mysql-community.repo
mysql-community-resource.repo
5.6 enable = 1
5.7 enable = 0
sudo yum -y install mysql-community-server
mysql安全性设置
sudo mysql_secure_installation
root beifeng
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option
4. 安装hive
bin/hive 以cli客户端连接hive
hive启动之前需要启动hadoop集群
(1)命令: create database test;
结果: 创建/user/hive/warehouse/test.db目录
(2)命令:
user test;
create tables docs(line string);
结果: /user/hive/warehouse/test.db/docs
(3)加载数据
命令:
load data local inpath '/home/beifeng/Documents/a.txt' overwrite into table docs;
(4)查看元数据信息
describe docs;
describe extended docs;
describe formatted docs;
hive的安装模式:本地内嵌derby作为metastore的安装模式(不用)
元数据存放在内嵌数据 derby metastore_db
(5)hive的wordcount
create table word_counts as
select word, count(1) as count from
(select explode(split(line, ' ')) as word from docs) w
group by word
order by word;
select * from word_counts;
生产环境hive安装模式:
(1)本地mysql作为metastore模式
hive-env.sh JAVA_HOME,HADOOP_HOME
hive-site.xml jdo
https://cwiki.apache.org/confluence/display/Hive/AdminManual+MetastoreAdmin
Config Param |
Config Value |
Comment |
---|---|---|
javax.jdo.option.ConnectionURL |
|
metadata is stored in a MySQL server |
javax.jdo.option.ConnectionDriverName |
|
MySQL JDBC driver class |
javax.jdo.option.ConnectionUserName |
|
user name for connecting to MySQL server |
javax.jdo.option.ConnectionPassword |
|
password for connecting to MySQL server |
hive.metastore.uris 为空表示本地模式,不为空则表示远程模式
copy mysql驱动到 /opt/modules/hive-0.13.1-cdh5.3.6/lib
mycat: mysql分布式工具
(2)远程mysql作为metastore模式
hive cli -> metastore服务器 ->mysql
jdbc ->
hive.metastore.uris = thriff://beifeng-hadoop-02:9083
启动metastore: hive --service metastore -p <port_num>
作为常驻经常 nohup hive --service metastore > hive_metastore.run.log 2>&1 &
系统日志输出级别: 2 错误,1正常
查看进程信息: ps -ef | grep HiveMetaStore
kill -9 processId
kill -9 `ps -ef | grep HiveMetaStore | awk '{print $2'} | head -n 1`
5. hive命令
hive常见的数据库操作:
show functions;
describe function sum;
describe function extended sum;
list
create database if not exists test;
use test;
create table if not exits docs(line string);
add file /home/aaa/a.sql;
list file
source /home/aaa/a.sql;
add jar /home/aaa/a.jar; udf程序需要jar
6. Hive shell操作
[beifeng@beifeng-hadoop- hive-0.13.-cdh5.3.6]$ hive --service cli --help;
// :: WARN conf.HiveConf: DEPRECATED: hive.metastore.ds.retry.* no longer has any effect. Use hive.hmshandler.retry.* instead
usage: hive
-d,--define <key=value> Variable subsitution to apply to hive
commands. e.g. -d A=B or --define A=B
--database <databasename> Specify the database to use
-e <quoted-query-string> SQL from command line
-f <filename> SQL from files
-H,--help Print help information
-h <hostname> connecting to Hive Server on remote host
--hiveconf <property=value> Use value for given property
--hivevar <key=value> Variable subsitution to apply to hive
commands. e.g. --hivevar A=B
-i <filename> Initialization SQL file
-p <port> connecting to Hive Server on port number
-S,--silent Silent mode in interactive shell
-v,--verbose Verbose mode (echo executed SQL to the
console)
drop database test cascade;
hive -e "use test; select * from docs;"
hive -f /home/aaa/a.sql
hive -e "use test; select * from docs;" > hive_result.txt
hive -hiveconf hive.cli.print.header=true -e "use test; select * from docs;"
hive -hiveconf hive.cli.print.header=true -e "use test; select * from docs;" > hive_result.txt
hive -S -hiveconf hive.cli.print.header=true -e "use test; select * from docs;" > hive_result.txt
hive -hiveconf
: hive.cli.print.header=true 是否显示表头信息
: hive.cli.print.current.db=ture 是否显示当前数据库
hive -i
默认 hive -i ~/.hiverc
set hive.cli.print.header=true;
set hive.cli.print.current.db=true;
create table cust_info(
custNo bigint,
custName string,
gender char(1),
custBirth string,
salary double
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORAGE AS TEXTFILE;
hive -e "use test; load"
hive导入数据时,即使文件格式不符合表结构定义,也可以导入成功。但是不符合格式的数据不会正确导入。
schema on read: schema约束读过程
schema on write: schema约束写过程
hive遵循schema on read, 如果读取出来的数据不符合表结构定义,用空值替代。好处是写的过程快
关系型数据库遵循schema on write。
7. 结合shell脚本:
《OD学hive》第四周0717的更多相关文章
- 《OD学hive》第六周20160731
一.hive的压缩 1. hadoop的压缩 1)为什么需要压缩 MapReduce的性能瓶颈:网络IO.磁盘IO 数据量:对于MapReduce的优化,最主要.根本就是要能够减少数据量 Combin ...
- 《OD学Hive》第六周20160730
一.Hive的JDBC连接 日志分析结果数据,存储在hive中 <property> <name>hive.server2.thrift.port</name> & ...
- 《OD学hive》第五周0723
https://cwiki.apache.org/confluence/display/Hive/LanguageManual 一.创建表 create table student(id int, n ...
- 一起学Hive——总结复制Hive表结构和数据的方法
在使用Hive的过程中,复制表结构和数据是很常用的操作,本文介绍两种复制表结构和数据的方法. 1.复制非分区表表结构和数据 Hive集群中原本有一张bigdata17_old表,通过下面的SQL语句可 ...
- 《OD学hadoop》第四周0716
7.16 一.回顾 二.HDFS Federation(联盟) Hadoop 2.2.0发布新特性 很多的大公司都在使用:BAT HDFS Federation + HDFS HA架构 互相隔开,但是 ...
- 《OD学hadoop》20160903某旅游网项目实战
一.大数据的落地点 1.数据出售 数据商城:以卖数据为公司的核心业务 2. 数据分析 百度统计 友盟 GA IBM analysis 3.搜索引擎 4. 推荐系统 mahout 百分比 5.精准营销 ...
- 《OD学oozie》20160813
一.日志收集项目案例 1. oozie中依赖jar包 在工作目录下创建lib目录,上传依赖包的lib目录下 2. 作业 将日志收集与处理项目案例使用oozie的workflow执行 3. coordi ...
- 《OD学Oozie》20160807Oozie
一.引入 MapReduce Job Hive 脚本任务 同一个业务:先后.定时调度 工作流: 定义工作流程 activity jbpm oozie: 大数据工作流定义与调度框架 专门定义与调度Map ...
- 《OD学Sqoop》数据转换工具Sqoop
一. 第二阶段课程回顾 hadoop 2.x HDFS YARN MapReduce Zookeeper Hive 二.大数据协作框架 对日志类型的海量数据进行分析 hdfs mapreduce/hi ...
随机推荐
- [COCI]coci2015/2016 nekameleoni
题意: 初始数列,每个数都在1~k以内 支持两种操作:1.修改一个数,修改后的数在1~k内 2.查询一个最短包含1~k的序列的长度 查询100000 ...
- 来自平时工作中的css知识的积累---持续补充中
① 现代浏览器中,<img>元素默认情况下底部会有空白,那么这个空白到底是从哪里来的? 解惑: method-one:猛戳 来自知乎的解答 method-two: 延伸阅读 what is ...
- [工作积累] GCC 4.6 new[] operator内存对齐的BUG
对于用户没有定义dctor(包括其所有成员)的类来说, new CLASS[n] 可能会直接请求sizeof(CLASS)*n的空间. 而带有dctor的 类, 因为delete[]的时候要逐个调用析 ...
- 【前端】js转码
js转码 function urlencode (str) { str = (str + '').toString(); return encodeURIComponent(str).replace( ...
- 禁止触屏滑动touchmove方法介绍
在移动端页面开发中,有时需要禁止用户滑动屏幕,搜索了好久才找到移动终端的touch事件,touchstar,touchmove,touchend. 阻止滚动 一些移动设备有缺省的touchmove行为 ...
- Kafka的coordinator
(基于0.10版本) Group Management Protocol Kafka的coordiantor要做的事情就是group management,就是要对一个团队(或者叫组)的成员进行管理. ...
- hdu5593/ZYB's Tree 树形dp
ZYB's Tree Memory Limit: 131072/131072 K (Java/Others) 问题描述 ZYBZYB有一颗NN个节点的树,现在他希望你对于每一个点,求出离每个点距 ...
- 由枚举模块到ring0内存结构 (分析NtQueryVirtualMemory)
是由获得进程模块而引发的一系列的问题,首先,在ring3层下枚举进程模块有ToolHelp,Psapi,还可以通过在ntdll中获得ZwQuerySystemInformation的函数地址来枚举,其 ...
- Spark基础与Java Api介绍
原创文章,转载请注明: 转载自http://www.cnblogs.com/tovin/p/3832405.html 一.Spark简介 1.什么是Spark 发源于AMPLab实验室的分布式内存计 ...
- sql 泡沫 或者 递归查询
if object_id('[tb]') is not null drop table [tb] go ),parentid int) insert [tb] ,N union all ,N unio ...