我的偏见:
对于互联网公司来说提炼挖掘生产中用户产生的大量日志是个有价值的工作,在这些看似垃圾东西中蕴含着大量的商业机会和用户的需求,如果可以简单的实现当然皆大欢喜,但是面对庞大的输出日志需要去提炼的时候只好束手无则无视他的存在,就拿我们最熟悉的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(DateInfo STRING,LogName STRING,LogLevel STRING,MSG STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\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的公司有:
淘宝、中国移动研究院、英特尔研究院、金山软件、百度、腾讯、新浪、搜狐。
相关文章:
Apache Hive入门1
–end–
分享到:
相关推荐
在本章中,我们将深入探讨数据仓库的基础知识以及如何通过Apache Hive进行初步探索。数据仓库是现代企业数据管理和分析的核心,而Hive作为大数据处理的重要工具,为数据仓库提供了便捷的查询和分析能力。 首先,让...
大数据系列-Hive入门与实战 Hive 是什么? ---------------- Hive 是一个构建在 Hadoop 之上的数据仓库平台,能够将 SQL 语句转译成 MapReduce 作业,并在 Hadoop 集群上执行。Hive 表是 HDFS 的一个文件目录,一...
### Apache Hive 入门 #### 动机与背景 Apache Hive 的起源可以追溯到 Facebook,在那里数据最初通过夜间定时任务收集并存储在 Oracle 数据库中。随着数据量的增长(从 2006 年的几十 GB 增长到 2007 年每天新增 1...
### Hive入门文档笔记 #### 一、Hive简介与安装配置 Hive 是一个构建在 Hadoop 之上的数据仓库工具,它通过提供 SQL 查询功能,使得用户可以更方便地处理存储在 Hadoop 分布式文件系统(HDFS)中的大规模数据集。...
资源包中的“apache-hive-1.2.1-bin.tar.gz”是Hive的安装包,解压后需要进行配置,包括设置Hive的环境变量、配置Hadoop的相关路径、以及配置Hive的metastore(元数据存储)。在实际操作中,通常会将metastore服务...
Apache Hadoop:Hadoop数据仓库Hive入门与应用.docx
Apache Hive 是一个基于Hadoop...综上所述,"apache-hive-2.3.3-bin.7z"包含了完整的Apache Hive 2.3.3版本,提供了高效的数据仓库解决方案,适用于大数据的分析和查询,尤其适合大数据初学者和开发者快速入门和实践。
大数据 Hive 入门例子和代码 第1章:Hive 简介 Hive 是一个数据仓库软件项目,用于对存储在分布式存储系统(如Hadoop)中的大数据进行查询和管理。Hive 定义了一种类似于 SQL 的查询语言,称为 HiveQL,它允许用户...
从入门到精通的过程涵盖了Hive的安装、配置、性能调优和实际应用。你将学习如何: 1. **设置Hive环境**: 安装Hive、配置Hive-site.xml、初始化元数据存储。 2. **数据加载与导出**: 使用LOAD DATA命令加载数据,...
Hive入门与实战.pdf hive函数大全.doc Hive用户手册中文版.pdf Hive用户指南-V1.1.doc Hive是什么 Hive是一个基于Apache Hadoop的数据仓库。对于数据存储与处理,Hadoop提供了主要的扩展和容错能力。 Hive设计的...
根据提供的文件信息“hive入门到精通”,我们可以详细探讨Hive的相关知识点,包括其基础概念、安装配置、数据操作语言(DML)与数据定义语言(DDL)等核心内容。 ### Hive基础知识 1. **Hive简介**: - Apache Hive...
### Hive入门资料详解 #### 一、Hive的层次结构与基本操作 ##### 进入Hive 要开始使用Hive,首先需要登录到网关机,并通过命令`hive`来启动Hive命令行界面。 ##### 查看所有数据库 在Hive命令行中输入`show ...
### 高级软件人才培训专家-Hadoop课程资料-4-第四章 - 分布式SQL计算 Hive 入门 #### Apache Hive 概述 Apache Hive 是一款面向大数据处理的分布式 SQL 计算工具,旨在简化 Hadoop 生态系统中的数据查询与分析流程...
大数据系列Hive入门与实战 Hive 是一个基于 Hadoop 的数据仓库平台,提供了类似于 SQL 语句的查询接口,自动将查询语句编译转化为 MapReduce 作业后在 Hadoop 上执行,这使得分析人员可以更方便地使用 Hadoop 进行...
通过讲解大数据概述、技术栈、数据处理与分析、开发工具、开发流程等内容,结合示例,帮助王子入门大数据开发。 本示例展示了如何使用Apache Spark进行数据处理和机器学习。通过读取CSV文件,对数据进行清洗和特征...