一、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. [COCI]coci2015/2016 nekameleoni

    题意: 初始数列,每个数都在1~k以内 支持两种操作:1.修改一个数,修改后的数在1~k内                           2.查询一个最短包含1~k的序列的长度 查询100000 ...

  2. 来自平时工作中的css知识的积累---持续补充中

    ① 现代浏览器中,<img>元素默认情况下底部会有空白,那么这个空白到底是从哪里来的? 解惑: method-one:猛戳 来自知乎的解答 method-two: 延伸阅读 what is ...

  3. [工作积累] GCC 4.6 new[] operator内存对齐的BUG

    对于用户没有定义dctor(包括其所有成员)的类来说, new CLASS[n] 可能会直接请求sizeof(CLASS)*n的空间. 而带有dctor的 类, 因为delete[]的时候要逐个调用析 ...

  4. 【前端】js转码

    js转码 function urlencode (str) { str = (str + '').toString(); return encodeURIComponent(str).replace( ...

  5. 禁止触屏滑动touchmove方法介绍

    在移动端页面开发中,有时需要禁止用户滑动屏幕,搜索了好久才找到移动终端的touch事件,touchstar,touchmove,touchend. 阻止滚动 一些移动设备有缺省的touchmove行为 ...

  6. Kafka的coordinator

    (基于0.10版本) Group Management Protocol Kafka的coordiantor要做的事情就是group management,就是要对一个团队(或者叫组)的成员进行管理. ...

  7. hdu5593/ZYB's Tree 树形dp

    ZYB's Tree    Memory Limit: 131072/131072 K (Java/Others) 问题描述 ZYBZYB有一颗NN个节点的树,现在他希望你对于每一个点,求出离每个点距 ...

  8. 由枚举模块到ring0内存结构 (分析NtQueryVirtualMemory)

    是由获得进程模块而引发的一系列的问题,首先,在ring3层下枚举进程模块有ToolHelp,Psapi,还可以通过在ntdll中获得ZwQuerySystemInformation的函数地址来枚举,其 ...

  9. Spark基础与Java Api介绍

    原创文章,转载请注明: 转载自http://www.cnblogs.com/tovin/p/3832405.html  一.Spark简介 1.什么是Spark 发源于AMPLab实验室的分布式内存计 ...

  10. sql 泡沫 或者 递归查询

    if object_id('[tb]') is not null drop table [tb] go ),parentid int) insert [tb] ,N union all ,N unio ...