大数据关键词

  • Hadoop
  • Hbase
  • Hive
  • Pig
  • MapReduce
  • YARN(MapReduce 2.0)
  • ZooKeeper
  • MapReduce
  • Spark(Scala)
  • Storm
  • Cloudera Impala
  • Shark(Hive on Spark)
  • Presto
  • Druid(秒+十亿行级)
  • Kylin(eBay,TPB+百亿数据+ANSI SQL+秒级+ODBC)
  • Cubert(Linkedin)

Hadoop生态圈由以下内容组成:

  • HDFS—— Hadoop生态圈的基本组成部分是Hadoop分布式文件系统(HDFS)。HDFS是一种数据分布式保存机制,数据被保存在计算机集群上。数据写入一次,读取多次。HDFS为HBase等工具提供了基础。
  • MapReduce——Hadoop的主要执行框架是MapReduce,它是一个分布式、并行处理的编程模 型。MapReduce把任务分为map(映射)阶段和reduce(化简)。开发人员使用存储在HDFS中数据(可实现快速存储),编写Hadoop的 MapReduce任务。由于MapReduce工作原理的特性, Hadoop能以并行的方式访问数据,从而实现快速访问数据。
  • Hbase——HBase是一个建立在HDFS之上,面向列的NoSQL数据库,用于快速读/写大量数据。HBase使用Zookeeper进行管理,确保所有组件都正常运行。
  • Zookeeper ——用于Hadoop的分布式协调服务。Hadoop的许多组件依赖于Zookeeper,它运行在计算机集群上面,用于管理Hadoop操作。
  • Oozie——Oozie是一个可扩展的工作体系,集成于Hadoop的堆栈,用于协调多个MapReduce作业的执行。它能够管理一个复杂的系统,基于外部事件来执行,外部事件包括数据的定时和数据的出现。
  • Pig——它是MapReduce编程的复杂性的抽象。Pig平台包括运行环境和用于分析Hadoop数据集的脚本语言(Pig Latin)。其编译器将Pig Latin翻译成MapReduce程序序列。
  • Hive ——Hive类似于SQL高级语言,用于运行存储在 Hadoop上的查询语句,Hive让不熟悉MapReduce开发人员也能编写数据查询语句,然后这些语句被翻译为Hadoop上面的 MapReduce任务。像Pig一样,Hive作为一个抽象层工具,吸引了很多熟悉SQL而不是Java编程的数据分析师。

Hadoop的生态圈还包括以下几个框架,用来与其它企业融合:

  • Sqoop是一个连接工具,用于在关系数据库、数据仓库和Hadoop之间转移数据。Sqoop利用数据库技术描述架构,进行数据的导入/导出;利用MapReduce实现并行化运行和容错技术。
  • Flume提供了分布式、可靠、高效的服务,用于收集、汇总大数据,并将单台计算机的大量数据转移到HDFS。它基于一个简单而灵活的架构,并提供了数据流的流。它利用简单的可扩展的数据模型,将企业中多台计算机上的数据转移到Hadoop。

除了在图1-1所示的核心部件外,Hadoop生态圈正在不断增长,以提供更新功能和组件,如以下内容:

  • Whirr——Whirr是一组用来运行云服务的Java类库,使用户能够轻松地将Hadoop集群运行于Amazon EC2、Rackspace等虚拟云计算平台。
  • Mahout——Mahout是一个机器学习和数据挖掘库,它提供的MapReduce包含很多实现,包括聚类算法、回归测试、统计建模。通过使用 Apache Hadoop 库,可以将Mahout有效地扩展到云中。
  • BigTop —— BigTop作为Hadoop子项目和相关组件,是一个用于打包和互用性测试的程序和框架。
  • Ambari——Ambar通过为配置、管理和监控Hadoop集群提供支持,简化了Hadoop的管理。

 

Hadoop发行版供应商

供应商 HADOOP特性
Cloudera CDH,个人版和企业版 CDH基于Hadoop2,(撰写本文时为4.1.2版本)包括 HDFS,YARN,HBas,MapReduce,Hive, Pig, Zookeeper, Oozie, Mahout, Hue以及其他开源工具(包括实时查询引擎Impala)。Cloudera的个人免费版包括所有CDH工具,和支持高达50个节点的集群管理器。 Cloudera企业版提供了更复杂的管理器,支持无限数量的集群节点,能够主动监控,并额外提供了数据分析工具。
Hortonworks数据平台 发行版(Alpha 2.0版)基于Hadoop2,包括HDFS,YARN, HBase, MapReduce, Hive, Pig, HCatalog, Zookeeper, Oozie, Mahout, Hue, Ambari, Tez,实时版Hive(Stinger)和其他开源工具。Hortonworks提供了高可用性支持、高性能的Hive ODBC驱动和针对大数据的Talend Open Studio。
MapR 基于Hadoop1,发行版(撰写本文时为版本M7)包括HDFS, HBase, MapReduce, Hive, Mahout, Oozie, Pig, ZooKeeper, Hue以及其他开源工具。它还包括直接NFS访问、快照、“高实用性”镜像、专有的HBase实现,与Apache完全兼容的API和一个MapR管理控 制台。
IBM InfoSphere BigInsights 基于Hadoop1,提供了两个版本。基本版包括HDFS, Hbase, MapReduce, Hive, Mahout, Oozie, Pig, ZooKeeper, Hue以及其他一些开源工具。并提供IBM的安装程序和数据访问工具的基本版本。企业版增加了复杂的作业管理工具、集成了数据源的数据访问层和 BigSheets(类似电子表格的界面,用来操作集群中的数据)。
GreenPlum的Pivotal HD 在撰写本文时,最新版基于Hadoop2,包括HDFS, MapReduce, Hive, Pig, HBase, Zookeeper, Sqoop, Flume和其他开源工具。Pivotal HD企业级还增加了先进的HAWQ数据库服务(ADS),和丰富、成熟、并行的SQL处理工具。
亚马逊弹性MapReduce(EMR) 在撰写本文时,最新版基于Hadoop1。亚马逊EMR是一个web服务,能够使用户方便且经济高效地处理海量的数 据。它采用Hadoop框架,运行在亚马逊弹性计算云EC2和简单存储服务S3之上。包括HDFS(S3支持),HBase(专有的备份恢 复),MapReduce,, Hive (Dynamo的补充支持), Pig, and Zookeeper.
Windows Azure的HDlnsight HDlnsight基于Hortonworks数据平台(Hadoop1),运行在Azure云。它集成了微软管理 控制台,易于部署,易于System Center的集成。通过使用Excel插件,可以整合Excel数据。通过Hive开放式数据库连接(ODBC)驱动程序,可以集成Microsoft SQL Server分析服务(SSAS)、PowerPivot和Power View。Azure Marketplace授权客户连接数据、智能挖掘算法以及防火墙之外的人。Windows Azure Marketplace从受信任的第三方供应商中,提供了数百个数据集。

目前,我们采用了Cloudera提供的CDH套件,简单方便。
目前得知,Cloudera对比了Spark与Hadoop,取代MapReduce,宣布该公司将加大Spark的投入。实际上,Cloudera已经开始了向Spark的迁移,其中包括了所有Hive SQL-on-Hadoop的部分。同时,Cloudera称并不会使用Spark替换Impala,他们坚信Impala将是交互式SQL on Hadoop查询的未来,处理Hive的速度远超现有的所有软件。

MapReduce即将成为历史。

hive error resoled "DEPRECATED: hive.metastore.ds.retry.* no longer has any effect. Use hive.hmshandler.retry.* instead"

I have installed hadoop(2.4.1)single node cluster and have tried to install hive(0.13.0)over it.
system base on Mac OS 10.9.4 width brew.
The problem is that everytime i start hive, I am getting this error bellow:

hive -hiveconf hive.root.logger=WARN,console
14/08/25 16:07:49 WARN conf.HiveConf: DEPRECATED: hive.metastore.ds.retry.* no longer has any effect.  Use hive.hmshandler.retry.* instead
14/08/25 16:07:50 [main]: WARN conf.HiveConf: DEPRECATED: hive.metastore.ds.retry.* no longer has any effect.  Use hive.hmshandler.retry.* instead

Logging initialized using configuration in jar:file:/usr/local/Cellar/hive/0.13.1/libexec/lib/hive-common-0.13.1.jar!/hive-log4j.properties
14/08/25 16:07:50 [main]: WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
14/08/25 16:07:52 [main]: WARN conf.HiveConf: DEPRECATED: hive.metastore.ds.retry.* no longer has any effect.  Use hive.hmshandler.retry.* instead
hive> %

The error fixed by edit the hive-site.xml
replace hive.metastore.ds.retry width /hive.hmshandler.retry

vim /usr/local/Cellar/hive/0.13.1/libexec/conf/hive-site.xml
:%s/hive.metastore.ds.retry/hive.hmshandler.retry/g
:wq

Installing Hive on OSX Lion (10.9) with Brew

Hadoop 2.5.0已经发布了,今天来体验一把Hadoop+Hive。

macos 10.9 brew 安装,没有安装brew则使用以下命令安装。

ruby -e "$(curl -fsSkL raw.github.com/mxcl/homebrew/go)

如果之前有安装hadoop,可以使用brew upgrade来升级之前安装的版本。

brew upgrade

接下来按正常流程安装Hadoop和hive

brew install hadoop
brew install hive

hive安装完以后,会提示一些环境变量信息,根据实际情况,将环境变量添加到 ~/.bash_profile

export JAVA_HOME="$(/usr/libexec/java_home)"
export HADOOP_HOME=/usr/local/Cellar/hadoop/2.4.1
export HIVE_HOME=/usr/local/Cellar/hive/0.13.1/libexec
export HCAT_HOME=/usr/local/Cellar/hive/0.13.1/libexec/hcatalog
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"

source ~/.bash_profile

接下来配置hive相关信息,如metastore数据库连接方式等,详细流程可以参考:http://running.iteye.com/blog/908038

$mysql -uroot -p
mysql> CREATE DATABASE metastore;
mysql> USE metastore;
mysql> CREATE USER 'hiveuser'@'localhost' IDENTIFIED BY 'password';
mysql> GRANT ALL PRIVILEGES on  metastore.* TO 'hiveuser'@'localhost';;
mysql> flush privileges;

mysql权限给了所有权限,否则会出现莫名的问题。

然后告诉hive使用jdbc来连接mysql,同时需要下载mysql连接驱动。

curl -L 'http://www.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.32.tar.gz/from/http://mysql.he.net/' | tar xz
cp mysql-connector-java-5.1.15/mysql-connector-java-5.1.32-bin.jar /usr/local/Cellar/hive/*/libexec/lib/

如果驱动版本有更新,可以到下面的官网下载,修改上面的版本号
http://dev.mysql.com/downloads/connector/j/

接下来修改hive的配置文件

cd /usr/local/Cellar/hive/*/libexec/conf
cp hive-default.xml.template hive-site.xml

修改数据库存连接方式和数据库账号

vim hive-site.xml

<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://localhost/metastore</value>
</property>

<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.mysql.jdbc.Driver</value>
</property>

<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>hiveuser</value>
</property>

<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>password</value>
</property>

<property>
  <name>datanucleus.fixedDatastore</name>
  <value>false</value>
</property>

修改mac下的连接环境变量,添加一行配置信息

cp hive-env.sh.template hadoop-env.sh
vim hadoop-env.sh
export HADOOP_OPTS="-Djava.security.krb5.realm=OX.AC.UK -Djava.security.krb5.kdc=kdc0.ox.ac.uk:kdc1.ox.ac.uk"

最后就可以测试Hive了。

$ hive;
hive > show tables;
hive> create table temp_table temp_col string;

安装过程很快,中间遇到几个环境变量、数据库账号不正确的问题,google一把都解决了。