一、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

hive-0.13.1-cdh5.3.6.tar.gz

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

jdbc:mysql://<host name>/<database name>?createDatabaseIfNotExist=true

metadata is stored in a MySQL server

javax.jdo.option.ConnectionDriverName

com.mysql.jdbc.Driver

MySQL JDBC driver class

javax.jdo.option.ConnectionUserName

<user name>

user name for connecting to MySQL server

javax.jdo.option.ConnectionPassword

<password>

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的更多相关文章

  1. 《OD学hive》第六周20160731

    一.hive的压缩 1. hadoop的压缩 1)为什么需要压缩 MapReduce的性能瓶颈:网络IO.磁盘IO 数据量:对于MapReduce的优化,最主要.根本就是要能够减少数据量 Combin ...

  2. 《OD学Hive》第六周20160730

    一.Hive的JDBC连接 日志分析结果数据,存储在hive中 <property> <name>hive.server2.thrift.port</name> & ...

  3. 《OD学hive》第五周0723

    https://cwiki.apache.org/confluence/display/Hive/LanguageManual 一.创建表 create table student(id int, n ...

  4. 一起学Hive——总结复制Hive表结构和数据的方法

    在使用Hive的过程中,复制表结构和数据是很常用的操作,本文介绍两种复制表结构和数据的方法. 1.复制非分区表表结构和数据 Hive集群中原本有一张bigdata17_old表,通过下面的SQL语句可 ...

  5. 《OD学hadoop》第四周0716

    7.16 一.回顾 二.HDFS Federation(联盟) Hadoop 2.2.0发布新特性 很多的大公司都在使用:BAT HDFS Federation + HDFS HA架构 互相隔开,但是 ...

  6. 《OD学hadoop》20160903某旅游网项目实战

    一.大数据的落地点 1.数据出售 数据商城:以卖数据为公司的核心业务 2. 数据分析 百度统计 友盟 GA IBM analysis 3.搜索引擎 4. 推荐系统 mahout 百分比 5.精准营销 ...

  7. 《OD学oozie》20160813

    一.日志收集项目案例 1. oozie中依赖jar包 在工作目录下创建lib目录,上传依赖包的lib目录下 2. 作业 将日志收集与处理项目案例使用oozie的workflow执行 3. coordi ...

  8. 《OD学Oozie》20160807Oozie

    一.引入 MapReduce Job Hive 脚本任务 同一个业务:先后.定时调度 工作流: 定义工作流程 activity jbpm oozie: 大数据工作流定义与调度框架 专门定义与调度Map ...

  9. 《OD学Sqoop》数据转换工具Sqoop

    一. 第二阶段课程回顾 hadoop 2.x HDFS YARN MapReduce Zookeeper Hive 二.大数据协作框架 对日志类型的海量数据进行分析 hdfs mapreduce/hi ...

随机推荐

  1. sqlite时间比较语法

    如下: 字段 > datetime('2000-01-01 01:01:01') AND 字段 < datetime('2001-01-01 01:01:01');

  2. shader 的 nounroll

    刚刚解决了一个特别坑的问题. 客户有个需求 需要shader里面 loop 的iterator数量 在运行时确定.z 这样对于里面存在  sample的loop就会被force unroll但因为co ...

  3. DXGI_FORMAT_R8G8B8A8_UNORM_SRGB

    这个类型的resource 后面多个SRGB 表示SRGB空间是指gamma 矫正系数为2.2的色彩空间,这个问题我没有问别人,是我自己是上网查的,我觉得我不是个女人了......我又level up ...

  4. apple wwdc resource

    1. every wwdc topic list http://asciiwwdc.com 2. wwdc video直接查看apple develop-> video 3. wwdc open ...

  5. CSS 的overflow:hidden 属性详细解释

    overflow:hidden这个CSS样式是大家常用到的CSS样式,但是大多数人对这个样式的理解仅仅局限于隐藏溢出, 而对于清除浮动这个含义不是很了解.一提到清除浮动,我们就会想到另外一个CSS样式 ...

  6. Webpack+React配合开发

    前面两篇关于webpack的基础和进阶,请先务必阅读之前的文章. Webpack教程一 Webpack教程二 什么是React React是一个由Facebook开发的library,它的口号是“A ...

  7. Java加密技术

    相关链接: Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC Java加密技术(二)——对称加密DES&AES Java加密技术(三)——PBE算法  ...

  8. C# winform post请求数据

    刚到公司混的时候,老板要求实现一个从C#的windows应用程序传参数到一个网页,然后这个网页不显示出来,但能把数据返回给应用程序的功能,问了好多人,找了好多资料,都搞不定,后来还是在老板的帮助下搞定 ...

  9. eclipse调试web项目

    Eclipse上的Web项目调试 在Eclipse中开发Web项目的首要难题就是如何进行代码调试.本文简要说明一下在Eclipse中使用Tomcat和Jetty调试Java Web项目的方法. Tom ...

  10. QStandardItemModel简单好用,QTableView带进度条

    类QabstractItemModel,QabstractListModel,QAbstractTableModel不保存数据,用户需要从这些类派生出子类,并在子类中定义某种数据结构来保存数据.与此不 ...