对于互联网公司来说提炼挖掘生产中用户产生的大量日志是个有价值的工作,在这些看似垃圾东西中蕴含着大量的商业机会和用户的需求,如果可以简单的实现当然皆大欢喜,但是面对庞大的输出日志需要去提炼的时候只好束手无则无视他的存在,就拿我们最熟悉的Log4J来说,如果是上TB的海量文本类型输出的格式根本无法查询,更谈不上数据挖掘。
当然我们也知道存放在数据库里面当然是不错的选择,对抗海量的日志数据存储与查询坚持做下去的话最后换来的是高昂的代价,Hive借助MapReduce的计算+HDFS的海量存储的功能,对与海量的日志存储、查询,数据挖掘Hive也是个不错的选择,在功能上和总体成本上高于刚刚所说的前两者。
但是对与存储在其他类型的NOSQL产品,Hive投入正式生产的环境我们还需要进一步的分析与比较,例如:MongoDB vs Hive,这个2个产品对于海量日志数据挖掘的性能与系统的扩展性来说谁将会比谁更胜一筹喃?因为 MongoDB 中也是支持海量级分布式存储,并且MongoDB也支持了MapReduce算法,这样我就需要为此得出一个结论,或者说我需要一个折中的方案,但不是现在。
Hive 中不支持对数据的改写和添加,所有的数据都是在加载的时候中确定好的。Hive中你添加了数据就无法删除的,SQL的fans们是不是很费解?我是这样认为的就拿Google的Google Analytics分析工具为例子,在Google Analytics分析工具 会有对日志进行删除的操作吗?答案是“NO!”,也许在Hive设计的时候Facebook的工程师就认为对需要进行挖掘的数据删除是一项没有必要的工作,Hive在Facebook能成功,并且运行在上千台的节点上 或许就是Facebook工程师们明确了Hive不去做的事情,让Hive只做好那一部分事情。
以上是我对 Hive Why(为什么使用Hive)片面的观点。
集群中的Hive
Hive的失效转发可以设计成这样的,将元数据和存储的数据分别保存在同一个位置,如图所示:

多个Hive的物理节点连接到相同的数据库和HDFS环境,防止Hive Thrift Server单点失效(SPFO)问题。
将Hive的MetaData 存储在 MySQL中,MySQL的运行环境支持双向同步或者集群,这样至少2台数据库服务器上热备份着Hive的元数据存储,例如:
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.1.203:3306/hive?createDatabaseIfNotExist=true</value>
</property>
多个物理Hive节点的数据内容保存在HDFS上,通过修改 hive-default.xml 配置 文件,指向NameNode节点即可,例如:
<property>
<name>hive.metastore.warehouse.dir</name>
<value>hdfs://serv1:9000/user/hive/warehouse</value>
<!– <value>/user/hive/warehouse</value> –>
<description>location of default database for the warehouse</description>
</property>
Hive 与 Log4J
在Hive中建一张表叫user_log,里面含有4个字段,以\t划分,一行一条数据,建表的脚本如下:
CREATE TABLE USER_LOG(DateInfoSTRING,LogNameSTRING,LogLevelSTRING,MSGSTRING)
ROW FORMAT DELIMITED FIELDSTERMINATEDBY '\t' LINESTERMINATEDBY '\n' STORED AS TEXTFILE;
在Log4J的日子输出格式中每个栏目以Tab相隔开,中间不是空格而是Tab,例如:
log4j.appender.A1.layout.ConversionPattern=%d %-6p %l %m %n
输入数据文件格式如下:

在Hive的控制台下将Log4J输出的日志文件导入Hive中,操作结果如下,如图所示:

在建表语句中还可以加入正则表达式,的自定义功能都在contrib里面, 例如:将WEB日志先用正则表达式进行组合,再按需要的条件进行组合输入到表中
add jar ../build/contrib/hive_contrib.jar;
CREATE TABLE apachelog (
host STRING,
identity STRING,
user STRING,
time STRING,
request STRING,
status STRING,
size STRING,
referer STRING,
agent STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
"input.regex" = "([^ ]*) ([^ ]*) ([^ ]*) (-|\\[[^\\]]*\\]) ([^ \"]*|\"[^\"]*\") (-|[0-9]*) (-|[0-9]*)(?: ([^ \"]*|\"[^\"]*\") ([^ \"]*|\"[^\"]*\"))?",
"output.format.string" = "%1$s %2$s %3$s %4$s %5$s %6$s %7$s %8$s %9$s"
)STORED AS TEXTFILE;
对于Hive的学习方向:
1、hive 的hive-default.xml配置文件中的参数细节,主要针对Hive的性能优化。
2、Hive 是如何使用MapReduce来完成工作的整套机制。
我的口水,目前使用Hadoop产品的国内外公司有如下一些:
Facebook
处理内部产生的日志和数据挖掘、展示以及机器学习
IBM
用Hadoop MapReduce 分析billions of lines of GPS data 并产生交通路线资讯.
Krugle
用Hadoop and Nutch 建构原始码搜寻引擎
SEDNS – Security Enhanced DNS Group
收集全世界的DNS 以探索网路分散式内容.
Technical analysis and Stock Research
分析股票资讯
University of Nebraska Lincoln, Research Computing Facility
用Hadoop跑约200TB的Compact Muon Solenoid经验分析紧凑渺子线圈,该机构是为瑞士欧洲核子研究组织CERN的大型强子对撞器计划的两大通用型粒子侦测器中的一个。
Yahoo!
使用Hadoop平台来发现发送垃圾邮件的僵尸网络
趋势科技
过滤像是钓鱼网站或恶意连结的网页内容
还有以前提到过的:A9.com、ImageShack、Last.fm、Powerset、纽约时报
在国内使用Hadoop的公司有:
淘宝、中国移动研究院、英特尔研究院、金山软件、百度、腾讯、新浪、搜狐。
分享到:
相关推荐
Hive入门与实战 PDF
Hive入门与实战
Hive 入门级详解 Hive 是一个基于 Hadoop 的数据仓库系统,它提供了一个类似于关系型数据库的查询语言 HQL,并且可以将查询转换为 MapReduce 任务来执行。Hive 的存储结构主要包括三个层面:数据存储层、计算资源层...
Hive入门与实战
### HIVE从入门到精通知识点概述 #### 一、Hive简介 - **背景与需求**:随着商业智能领域数据量的急剧增加,传统的数据仓库解决方案成本高昂,难以满足需求。Hadoop作为一种流行且开源的MapReduce实现,在Yahoo、...
2. **安装配置数据库**:用于存储 Hive 的元数据,通常使用 MySQL 或 Derby 数据库。 3. **获取 Hive 源码或可执行代码**:可以通过下载最新的发布包或从 Git 仓库克隆源代码。 4. **配置 Hive**:设置 Hive 如何...
大数据系列-Hive入门与实战 Hive 是什么? ---------------- Hive 是一个构建在 Hadoop 之上的数据仓库平台,能够将 SQL 语句转译成 MapReduce 作业,并在 Hadoop 集群上执行。Hive 表是 HDFS 的一个文件目录,一...
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询...Hive入门与实战.pdf hive函数大全.doc Hive用户手册中文版.pdf Hive用户指南-V1.1.doc 喜欢的朋友可以下载学习。
2. **Hive安装与配置** 资源包中的“apache-hive-1.2.1-bin.tar.gz”是Hive的安装包,解压后需要进行配置,包括设置Hive的环境变量、配置Hadoop的相关路径、以及配置Hive的metastore(元数据存储)。在实际操作中,...
### Hive入门文档笔记 #### 一、Hive简介与安装配置 Hive 是一个构建在 Hadoop 之上的数据仓库工具,它通过提供 SQL 查询功能,使得用户可以更方便地处理存储在 Hadoop 分布式文件系统(HDFS)中的大规模数据集。...
Hive入门基础知识.pdf
### Hive入门知识点详解 #### 一、Hive简介 Hive是一种基于Hadoop的数据仓库工具,主要用于对存储在Hadoop文件系统(HDFS)中的大数据集进行查询和管理。它通过提供类SQL的查询语言(HQL)来简化对Hadoop上数据的...
大数据 Hive 入门例子和代码 第1章:Hive 简介 Hive 是一个数据仓库软件项目,用于对存储在分布式存储系统(如Hadoop)中的大数据进行查询和管理。Hive 定义了一种类似于 SQL 的查询语言,称为 HiveQL,它允许用户...
以下是对Hadoop Hive入门学习的详细总结: ### 1. Hive 安装与部署 #### 1.1 环境需求 在开始Hive的安装之前,确保你已经具备了以下基础环境: - **JDK 1.6** 或更高版本:Hive依赖Java运行环境,所以首先需要安装...
Hive入门与实战.pdf hive函数大全.doc Hive用户手册中文版.pdf Hive用户指南-V1.1.doc Hive是什么 Hive是一个基于Apache Hadoop的数据仓库。对于数据存储与处理,Hadoop提供了主要的扩展和容错能力。 Hive设计的...
### Hadoop Hive 入门学习笔记 #### 一、Hadoop Hive 概述 Hadoop Hive 是一个基于 Hadoop 的数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的 SQL 查询功能,使得 Hadoop 上的数据可以被...
在大数据处理领域,Hive是一个极其重要的工具,它被广泛应用于大数据分析和数据仓库操作。本实战数据集主要涉及两个核心部分:`video`数据和`user`数据,这些都是构建大数据分析模型的基础元素。让我们深入探讨一下...
Hive入门与大数据分析实战 Hive是大数据处理中的一种重要工具,它能够帮助用户快速处理和分析大量数据。《Hive入门与大数据分析实战》这本书旨在帮助读者掌握Hive的基础知识和实用技巧,以便在工作中更好地发挥数据...
### Hive入门资料详解 #### 一、Hive的层次结构与基本操作 ##### 进入Hive 要开始使用Hive,首先需要登录到网关机,并通过命令`hive`来启动Hive命令行界面。 ##### 查看所有数据库 在Hive命令行中输入`show ...