精华内容
下载资源
问答
  • hadoop与大数据的关系? 大数据技术正渗透到各行各业。作为数据分布式处理系统的典型代表,Hadoop已成为该领域的事实标准。但Hadoop并不等于大数据。它只是一个成功的分布式系统,用于处理离线数据。大数据领域中...

    hadoop与大数据的关系?
    大数据技术正渗透到各行各业。作为数据分布式处理系统的典型代表,Hadoop已成为该领域的事实标准。但Hadoop并不等于大数据。它只是一个成功的分布式系统,用于处理离线数据。大数据领域中还有许多其他类型的处理系统。
    随着大数据技术的普及,Hadoop已成为其开源功能和卓越性能的新宠。有些人甚至认为大数据是Hadoop。实际上,这是一种误解。 Hadoop只是一个用于处理离线数据的分布式存储和处理系统。除了Hadoop之外,还有用于处理流数据的Storm、Oracle处理关系数据、Splunk处理实时机器数据……有许多主流大数据系统,而Hadoop只是其中之一。

    数据分析师要学什么?
    01、Hadoop生态系统及版本衍化 作业
    02、 HDFS应用场景、部署、原理与基本架构 作业
    02、 推荐课外阅读资料
    02、(1) HDFS应用场景、部署、原理与基本架构
    02、(2) HDFS部署与Shell命令使用
    02、(3) Understanding_Hadoop_Clusters_and_the_Network
    03、 MapReduce应用场景、原理与基本架构
    03、 推荐课外阅读资料
    03、MapReduce应用场景、原理与基本架构 作业
    04、MapReduce部署以及编程实践(涉及多语言编程)
    05、 HBase应用场景、原理与基本架构 作业
    05、 HBase应用场景、原理与基本架构
    05、推荐课外阅读资料
    06、 推荐课外阅读资料
    06、HBase部署以及编程实践 作业
    06、HBase部署以及编程实践
    07、HBase案例分析 作业
    07、推荐课外阅读资料
    08、 Zookeeper部署及典型应用 作业
    08、Zookeeper部署及典型应用 课外推荐阅读
    08、Zookeeper部署及典型应用
    09、Hive应用场景、基本架构、部署以及应用 作业
    09、Hive应用场景、基本架构、部署以及应用 课外推荐阅读
    09、Hive应用场景、基本架构、部署以及应用
    10、 Flume应用场景、原理、基本架构与案例分析 作业
    10、Flume应用场景、原理、基本架构与案例分析 课外阅读
    10、Flume应用场景、原理、基本架构与案例分析
    11、Mahout数据挖掘工具包介绍 作业
    11、Mahout数据挖掘工具包介绍 课外阅读
    12、Sqoop传统数据库与Hadoop间数据同步工具 作业
    12、Sqoop传统数据库与Hadoop间数据同步工具 课外阅读
    13、下一代Hadoop(2.0)介绍 作业
    13、下一代Hadoop(2.0)介绍 课外阅读
    Flume应用场景、原理、基本架构与案例分析
    Hadoop 2.0基本架构和发展趋势_董西成
    Hadoop distributed file system
    Hadoop in Practice
    Hadoop.in.Action
    Hadoop.Operations
    Hadoop.The.Definitive.Guide.3rd.Edition.May.2012
    HadoopMahoutRoadmap.png
    Hadoop、HBase、Hive、Pig、Zookeeper资料整理
    Hadoop与大数据技术大会PPT资料
    Hadoop与数据分析@taobao
    Hadoop在大型内容推荐系统中的应用
    Hadoop在雅虎的应用
    Hadoop实战(第2版)
    Hadoop实战-陆嘉恒(高清完整版)
    Hadoop技术内幕:深入解析Hadoop Common和HDFS
    Hadoop技术内幕:深入解析MapReduce架构设计i与实现原理》迷你书
    Hadoop权威指南(第2版) (1)
    Hadoop源代码分析完整版
    Hadoop源码.doc
    Hadop:开启通向云计算的捷径(刘鹏)
    HDFS HA和Federation安装部署方法 v0.1
    HDFS——Hadoop分布式文件系统深度实践(配光盘)_IT168文库
    Hive应用场景、基本架构、部署以及应用
    MapReduce Design Patterns
    opentsdb-hbasecon
    Professional Hadoop Solutions
    Sep-2013
    spring-data-hadoop-reference 1.0.2
    spring-data-hadoop-reference menual
    Sqoop传统数据库与Hadoop间数据同步工具
    《hadoop技术内幕:深入解析YARN架构设计与实现原理》迷你书
    下一代Hadoop(2.0)介绍
    推荐课外阅读资料
    数据可视化实战
    数据挖掘导论
    数据挖掘技术在推荐系统的应用by陈运文
    月光宝盒双11-HBase集群应用和优化经验-九翎
    深入浅出Hadoop实战开发(HDFS实战图片、MapReduce、HBase实战微博、Hive应用)(1)
    深入解析YARN架构设计与实现原理(完整版)
    精通Hadoop
    腾讯HADOOP集群实践

    大数据教程百度盘下载
    http://www.xuexiluxian.net/hadoop-xuexi.html

    展开全文
  • Alex 的 Hadoop 菜鸟教程: 第1课 hadoop体系介绍

    万次阅读 多人点赞 2014-07-02 11:25:53
    介绍hadoop的体系,对hadoop庞大的生态圈进行了介绍,并标出了学习的优先级。简单明了的介绍,看了不晕

    原帖地址:http://blog.csdn.net/nsrainbow/article/details/36396007

    本教程适用人群

    如果你是以下的几类人中的一种
    • 老板叫我搭建一个hadoop集群,但是我还什么都不懂,网上的教程概念介绍的好多,我看的头晕,咋办?
    • 我想学hadoop但是我是个完全不懂的小白,hadoop有这么多的东西,我究竟要学那些算是能学会hadoop?
    那么你就是本教程的适用人群!看完这个教程你不会成为一只Hadoop大象,但是你可以成为一只小象,至少你已经知道Hadoop长什么样子,有几条腿了,可以再学习很多进阶的教程了。

    本教程的特点

    • 不要求你有很多台机器,你的最低要求就是有2台虚拟机搭建出来的centos机器,这样你在家也可以学习hadoop,而不是必须要在实验室或者公司
    • 不会介绍很多的概念,直接采用一个个的实践例子让你自己感受hadoop,如果需要了解具体的概念和参数,请继续学习每个教程后面的参考资料
    • 前21课介绍了高优先级组件,属于课程的主体部分,学完了21课就算完成了课程了,真正成为一只小象了。21课之后的低优先级组件我就看心情更新了,毕竟没那么多时间
    OK,现在开始!


    hadoop核心

    Apache Hadoop 项目有两个核心组件,被称为 Hadoop 分布式文件系统 (Hadoop Distributed File System, HDFS) 的文件存储,以及被称为 MapReduce 的编程框架。有一些支持项目充分利用了 HDFS 和 MapReduce。 



    支持商

    Hadoop有两个主要支持商HortonWorks (代表社区)和 Cloudera (代表商业), HortonWorks发布的安装包叫 Ambari , Cloudera发布的安装包叫 CDH (截至本文发布最新为CDH5)。其实还有一个MapR因为用的人不多,我就不介绍了 
    选择建议:
    我也不知道选什么好,因为我只用过cdh的版本,只是因为他看起来更商业化,可能会更稳定吧,不过cdh的官方文档都是英文而且写的很杂乱。如果你找不到什么cdh的资料可以看下我博客里面关于hadoop的文章,这些都是是我在cdh官方文档的基础上翻译和改进的

    生态圈

    下面介绍下Hadoop庞大的开源生态圈的一些组件(主要还是以CDH5官方安装教程有提到的为主)。由于条目众多,我会列出学习的优先级:高,低。优先级低的只需要了解就好了,基本工作中都可能不会用到。所以大家一上手的时候只需要高这个级别的就好了,低的等闲的没事干的时候去看下。


    HDFS []

    hadoop做出了一个虚拟文件系统,在这个系统上你以为你创建了一个文件,其实这个文件有可能被同时存放在很多台机子上,这样就让你的系统表面上看起来是一个空间,实际上是很多服务器的磁盘构成的,这就是分布式操作系统

    对应课程

    YARN (MapReduce2.0) []

    这是一个面向 Hadoop 的编程模型。有两个阶段,它们分别被称为 Map 和 Reduce。在分布式系统上进行计算操作基本都是由这两个概念步骤组成的,因为分布式系统,并不像一般的数据库或者文件系统,不能从上至下,或者从第一条开始进行求和等操作,就需要一种由分散的节点不断向一个点聚拢的计算过程。

    对应课程

    HBase [

    HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。HBase 跟 MongoDB也是目前市面上NoSQL数据库的两个首选项目

    对应课程


    ZooKeeper []

    ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。提供中央的控制信息和同步。通常为Hbase提供节点见的协调。看起来很抽象,简单的说没有zookeeper就无法部署HDFS的HA模式,只要是生产环境的部署肯定离不开zookeeper。所以一开始也不用太懂zookeeper,只要会用就行。

    对应课程

    Hive []

    你可以在Hive里面建立表,通过表映射实际存储的hadoop文件,然后写sql去查询数据。Hive会把你输入的sql语句转化为mapreduce 任务去查询hadoop。但是速度非常慢,每次查询大概需要几分钟,所以hive主要是用于统计分析用的,并且支持的sql语法非常有限。但是毕竟写sql比些mapreduce任务简单多了。

    对应课程

    Sqoop []

    Sqoop是一款开源的工具,主要用于在HADOOP(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递。

    对应课程


    Impala []

    Cloudera发布了实时查询开源项目Impala 1.0 beta版,称比原来基于MapReduce的Hive SQL查询速度提升3~90倍(详情可以参考此文中的“How much faster are Impala queries than Hive ones, really?”部分),而且更加灵活易用。Impala是高角羚的意思,这种羚羊主要分布在东非。多款产品实测表明,Impala比原来基于MapReduce的Hive SQL查询速度提升3~90倍。Impala是Google Dremel的模仿,但在SQL功能上青出于蓝胜于蓝。

    对应课程

    pig []

    pig是hadoop上层的衍生架构,与hive类似。对比hive(hive类似sql,是一种声明式的语言),pig是一种过程语言,类似于存储过程一步一步得进行数据转化。感觉跟hive 类似是不是?网上有人总结了他们的区别:Pig用来写一些即时脚本吧,比如领导问你要份数据,半个小时要出来之类;Hive嘛,就是一个产品经理过来,问这个啥回事?于是你Hive一下,一个简洁的类SQL语句

    对应课程

    Spark []

    Spark是一个基于内存计算的开源的集群计算系统,目的是让数据分析更加快速。Apache Spark现在名声大噪。为支持Spark项目成立的 Databricks公司 从Andereessen Horowittz那里募集了1400万美元,Cloudera也已决定全力支持Spark

    对应课程

    HttpFs[]

    HttpFs 其实也是HDFS的组件之一只是默认是没有安装的,有了HttpFs可以方便的在网页上操作hdfs的文件系统,并且HttpFs提供了一套REST风格的API可以用程序对hdfs的文件进行操作


    Hue []

    HUE是一个很漂亮的web客户端,你可以在hue上调用和管理hadoop的各个组件,比如查看/编辑Hbase表的数据,查看/编辑Hive数据表,执行sql等作业

    对应课程

    Oozie []

    Oozie是一个工作流引擎服务器,用于运行Hadoop Map/Reduce和Pig 任务工作流.同时Oozie还是一个Java Web程序,运行在Java Servlet容器中,如Tomcat

    对应课程

    Phoenix[]

    Phoenix是Apache的顶级项目。Phoenix在Hbase上构建了一层关系型数据库。可以用SQL来查询Hbase数据库,并且速度比Impala更快。还支持很多丰富的特性,最有名的便是它的二级索引。Phoenix借鉴了很多关系型数据库优化查询的方法,将这些方法用在Hbase上,让Hbase更方便使用。

    对应课程

    Flume[]

    日志收集组件,通过在服务器上安装agent来收集服务器的日志,而且可以把多个flume串联起来,实现日志的转换,处理和集中。其实这个组件并不完全算是hadoop生态圈里面的东西,但是由于hadoop集群机器众多,日志数量巨大,可以说hadoop自己生成的日志就是海量数据,所以怎样合理的收集日志和对日志进行查询就成为了一个hadoop领域的一个必须解决的问题。所以flume也被列为hadoop生态圈的一份子


    Sentry []

    提供细粒度基于角色的安全控制


    Flume [

    Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。


    Apache Crunch []

    Apache Crunch(孵化器项目)是基于Google的FlumeJava库编写的Java库,用于创建MapReduce流水线。与其他用来创建MapReduce作业的高层工具(如Apache Hive、Apache Pig和Cascading等)类似,Crunch提供了用于实现如连接数据、执行聚合和排序记录等常见任务的模式库。而与其他工具不同的是,Crunch并不强制所有输入遵循同一数据类型。相反,Crunch使用了一种定制的类型系统,非常灵活,能够直接处理复杂数据类型,如时间序列、HDF5文件、Apache HBase表和序列化对象(像protocol buffer或Avro记录)等。

    Crunch并不想阻止开发者以MapReduce方式思考,而是尝试使之简化。尽管MapReduce有诸多优点,但对很多问题而言,并非正确的抽象级别:大部分有意思的计算都是由多个MapReduce作业组成的,情况往往是这样——出于性能考虑,我们需要将逻辑上独立的操作(如数据过滤、数据投影和数据变换)组合为一个物理上的MapReduce作业


    Llama []

    让外部服务器从YARN获取资源的框架,另外Llama就是羊驼国内俗称草泥马


    Mahout []

    Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Apache Mahout项目已经发展到了它的第三个年头,目前已经有了三个公共发行版本。Mahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。此外,通过使用 Apache Hadoop 库,Mahout 可以有效地扩展到云中。

    Mahout 的创始人 Grant Ingersoll 介绍了机器学习的基本概念,并演示了如何使用 Mahout 来实现文档聚类、提出建议和组织内容。



    Cloudera Search []

    基于Solr的查询组件


    Snappy []

    Snappy 是一个 C++ 的用来压缩和解压缩的开发包,其目标不是最大限度压缩,而且不兼容其他压缩格式。Snappy 旨在提供高速压缩速度和合理的压缩率。Snappy 比 zlib 更快,但文件相对要大 20% 到 100%。在 64位模式的 Core i7 处理器上,可达每秒 250~500兆的压缩速度。


    Whirr []

    Apache Whirr是一套运行于云服务的类库(包括Hadoop),可提供高度的互补性。Whirr现今相对中立,当前支持Amazon EC2和Rackspace服务。一组为了运行云服务而设计的代码库,比如可以用来在AWS上部署ZooKeeper


    Avro []

    被IBM和Cloudera使用,用于数据串行化,也就是将数据转换为紧密的二进制格式(JSON)在Hadoop上存储和使用


    以下的两个在CDH手册中并没有提到,但是在别的hadoop教程中经常被提到,顺带也介绍下


    Fuse []

    让 HDFS 系统看起来就像一个普通的文件系统,所以您可以对 HDFS 数据使用 ls、rm、cd 和其他命令。

    Hadoop Streaming []

    一个实用程序,在任何语言(C、Perl 和 Python、C++、Bash 等)中支持 MapReduce 代码。示例包括一个 Python 映射程序和一个 AWK 缩减程序。


    Hadoop 架构图

    本图显示了 Hadoop 架构

    HDFS(底层)位于商品硬件的集群之上。简单的机架式服务器,每台都配置 2 个十六核 CPU、6 到 12 个磁盘,以及 32G RAM。在一个 map-reduce 作业中,Map层以极高的速度从磁盘读取。Map向Reduce发出已进行排序和提供的键值对,然后,Reduce层汇总键值对。

    展开全文
  • hadoop入门教程

    2017-10-26 14:29:56
    hadoop入门教程,ubuntu 下 安装配置 hadoop,Eclipse 连接hadoop开发程序入门
  • 菜鸟教程hadoop-hadoop入门教程菜鸟教程hadoop-本站旨在为从事大数据行业或学习hadoop技术人员提供一个交流学习平台,全面收集了在大数据时代的互联网巨头企业的hadoop入门教程精华技术文章Lastly, we varied the ...

    菜鸟教程hadoop-hadoop入门教程

    菜鸟教程hadoop-本站旨在为从事大数据行业或学习hadoop技术人员提供一个交流学习平台,全面收集了在大数据时代的互联网巨头企业的hadoop入门教程精华技术文章

    Lastly, we varied the number of nodes between 10 and 200 with step size 10. Meanwhile, the number of tasks was changed accordingly to make it equal the number of idle slots so that all idle slots would be utilized (note the ratio of idle slots is fixed). The result is shown in Fig. 4(c). We observe that the improvement oscillates. We conjecture that it is caused by the fact that our simulation only covers a portion of all possible data placements and idle slot distributions. When there are 100 nodes and 50 tasks, the input data of each task can be placed onto any of the 100 nodes and the number of all possible placements is 10050. That number does not even take into consideration how idle slots are distributed across all slots. So it is impossible to enumerate all possible cases and calculate result for each.

     killJob:结束一个在运行中的作业;

    2016-12-16 16:16:30 【话唠】深圳-大数据(947416560)蛋疼

    2016-07-11 20:32:02 徐阳、(285809452) 深圳房租多少一个月?

    2016-03-27 23:20:54 么么哒(1030405335)然后电话那边说随时可以涨[表情]

    2016-06-05 10:47:11 发表意见(10000)SparkSH加入讨论

    她开始相信,也许当年他说得对

    王女士得到未婚夫变心的消息,痛不欲生hadoop书籍 知乎满是甜蜜的承诺,他说他等我,甚至一辈子;他说让我原谅他没时间和我联络她不由也有想喊的感觉

    她也很舍不得我,她让我和她一起走

    在我需要安慰的时候,你的声音只能在电话里边仿佛置身与一片迷雾之中,找不到出路,也找不到方向把她拖了回去,男人不在家,屋里一片狼藉

    2014-08-19 12:47:32 智宸(994909552)输出目录 别做输入目录的子目录 换个输出目录 再试试

    塞外飞客的小屋:

    英特尔希望通过此投资来扩大其服务器业务,以抵消个人电脑市场下滑所带来的冲击

    coco:

    【集群安装配置Hadoop详细图解】安装的过程发现node5-8无法启动datanode和tasktracker,后来发现原因为node5-8机器中已经运行了java程序

    @糖果子@:

    它的快速... (分享自@无觅阅读)

    单身男孩:

    使用MapReduce进行排序 | 之前在工作中使用到过MapReduce的排序,当时对于这个平台的理解还比较浅显,选择的是一个最为简单的方式,就是只用一个Recude来做很多次,我问自己,为什么非要留下来不可?为什么要一个人单身来到这个

    被世界早遗忘了的角落?而问题是没有答案的,我仍然一天一天的住下来了

    今天荷西下班来对我说,工地上有个工人朋友家住在山里面,如果我们跟他回

    去,可以去看看这人养的猪羊,还有他种的菜

    那家店卖台布,中国大陆制造的台布,我进去看,看见了一个盘子,里面放著

    乱七八糟的一堆破铜烂铁

    “这里有鬼,你还是下去吧!”我拉拉披在身上的雨布,慢慢的说”我又说大数据会计信息化

    我看书,这使我多活几度生命

    我自己妈妈在中国的日子跟我现在一色一样,她做一个

    四代同堂的主妇,整天满面笑容

    童年,只有在回忆中显现时,才成就了那份完美

    展开全文
  • 虽然nosql是不用定义列的,但是由于我们的hadoop是分布式的,肯定会有一些列在这台机子上,有一些列在那些机子上,为了性能问题,需要弄出一个算法来把一些经常在一起使用的列放到一台机子上,最简单的算法就是由...

    原帖地址: http://blog.csdn.net/nsrainbow/article/details/38758375

    声明:

    • 本文基于Centos 6.x + CDH 5.x 
    • 本例中 Hbase 是安装成集群模式的
    本文通过建立student表等相关操作,简单介绍一下hbase的shell操作

    建立student 表

    使用 hbase shell命令进入hbase的命令行
    [root@localhost conf]# hbase shell
    2014-08-22 16:10:47,662 INFO  [main] Configuration.deprecation: hadoop.native.lib is deprecated. Instead, use io.native.lib.available
    HBase Shell; enter 'help<RETURN>' for list of supported commands.
    Type "exit<RETURN>" to leave the HBase Shell
    Version 0.96.1.1-cdh5.0.1, rUnknown, Tue May  6 13:27:24 PDT 2014

    然后用 create建立一个表,我们建立的表有如下属性
    表名: student
    列簇:sid, name, age

    什么是列簇?

    Hbase是面向列存储的数据库。Hbase中数据列是由列簇来组织的。一个列簇相当于你在mysql中这个表的多个列定义的总和。但是特别的是,一个表可以对多个列簇。具体列簇里面有哪些列是开始时不用指定的。暂时只需要知道这么多,等做了以后慢慢去理解消化,我们学习的时候一定要掌握方法,先做再想为什么这么做,是最高效的学习方式。

    为什么要有列簇?

    在同一个列簇中的列是存放在一个实例上的。所以对于列簇的理解我的猜测是这样的,刚开始可能没有列簇。虽然nosql是不用定义列的,但是由于我们的hadoop是分布式的,肯定会有一些列在这台机子上,有一些列在那些机子上,为了性能问题,需要弄出一个算法来把一些经常在一起使用的列放到一台机子上,最简单的算法就是由用户自己去定,这就产生了列簇,也就是列的集合,在同一个列簇中的列都在一个机子上。

    说完了概念,我们来建立一下这个表
    hbase(main):001:0> create 'student', 'info'
    0 row(s) in 4.3300 seconds
    
    => Hbase::Table - student

    增加数据

    使用put增加一行,这里说的一行意思是:一个表的一个列簇中的一个行,在mysql中就相当于只增加 一行中的一列
    hbase(main):002:0> put 'student','row1','info:name','jack'
    0 row(s) in 0.1990 seconds
    意思是往 student 的 name 列中插入一个值 jack
    我们查一下这条数据
    hbase(main):003:0> get 'student','row1','info:name'
    COLUMN                        CELL                                                                               
     info:name                    timestamp=1408697225683, value=jack                                                
    1 row(s) in 0.0490 seconds
    查出来了。
    怎么样?是不是感觉这么费劲才插入了一个行的一个列?这是以为hbase是基于google的工程师 Fay Chang (应该是个华裔) 的关于bigtable的论坛写的,而bigtable就是拥有超大列数的表格,大到什么程度?大到一台电脑放不下了,必须用多台电脑分布式的存放,才能放的下,所以数据的操作都是以一行一列为最小单位的。
    这个row1 是rowkey

    rowkey

    行以rowkey作为唯一标示。Rowkey是一段字节数组,这意味着,任何东西都可以保存进去,例如字符串、或者数字。行是按字典的排序由低到高存储在表中


    我们继续插入这行别的列
    hbase(main):004:0> put 'student','row1','info:sid','1'
    0 row(s) in 0.0200 seconds
    
    hbase(main):005:0> put 'student','row1','info:age','22'
    0 row(s) in 0.0210 seconds
    然后我们用scan命令查询一下整个表
    hbase(main):006:0> scan 'student'
    ROW                           COLUMN+CELL                                                                        
     row1                         column=info:age, timestamp=1408697651322, value=22                                 
     row1                         column=info:name, timestamp=1408697225683, value=jack                              
     row1                         column=info:sid, timestamp=1408697640490, value=1                                  
    1 row(s) in 0.0580 seconds

    可以看到有三条记录,但是都是一个row里面的,这个row才是相当于mysql的一行
    继续插入别的记录,最终结果是这样
    hbase(main):005:0> scan 'student'
    ROW                              COLUMN+CELL                                                                                  
     row1                            column=info:age, timestamp=1420817226790, value=22                                           
     row1                            column=info:name, timestamp=1420817205836, value=jack                                        
     row1                            column=info:sid, timestamp=1420817219869, value=1                                            
     row2                            column=info:age, timestamp=1420817278346, value=28                                           
     row2                            column=info:name, timestamp=1420817252182, value=terry                                       
     row2                            column=info:sid, timestamp=1420817267780, value=2                                            
     row3                            column=info:age, timestamp=1420817315351, value=18                                           
     row3                            column=info:name, timestamp=1420817294342, value=billy                                       
     row3                            column=info:sid, timestamp=1420817304621, value=3                                            
     row4                            column=info:name, timestamp=1420858768667, value=karry                                       
     row4                            column=info:sid, timestamp=1420858794556, value=4                                            
    4 row(s) in 1.0990 seconds

    命令介绍

    有了基础数据我们就可以通过一边操作一边学习hbase的命令了,比如上个例子我们学习到了一个新的命令 scan

    scan 查询数据表

    scan命令如果不带任何参数相当于sql中的 select * from table

    Limit 查询后显示的条数

    用limit可以限制查询的条数
    scan 'student',{'LIMIT'=>2}

    效果如下
    hbase(main):006:0> scan 'student',{'LIMIT'=>2}
    ROW                              COLUMN+CELL                                                                                  
     row1                            column=info:age, timestamp=1420817226790, value=22                                           
     row1                            column=info:name, timestamp=1420817205836, value=jack                                        
     row1                            column=info:sid, timestamp=1420817219869, value=1                                            
     row2                            column=info:age, timestamp=1420817278346, value=28                                           
     row2                            column=info:name, timestamp=1420817252182, value=terry                                       
     row2                            column=info:sid, timestamp=1420817267780, value=2                                            
    2 row(s) in 0.8250 seconds

    STARTROW 起点rowkey

    用startrow可以定义查询返回结果的起点rowkey,相当于大于等于,比如

    hbase(main):007:0> scan 'student',{'STARTROW'=>'row2'}
    ROW                              COLUMN+CELL                                                                                  
     row2                            column=info:age, timestamp=1420817278346, value=28                                           
     row2                            column=info:name, timestamp=1420817252182, value=terry                                       
     row2                            column=info:sid, timestamp=1420817267780, value=2                                            
     row3                            column=info:age, timestamp=1420817315351, value=18                                           
     row3                            column=info:name, timestamp=1420817294342, value=billy                                       
     row3                            column=info:sid, timestamp=1420817304621, value=3                                            
     row4                            column=info:name, timestamp=1420858768667, value=karry                                       
     row4                            column=info:sid, timestamp=1420858794556, value=4

    STARTROW 可以使用通配符,比如
    hbase(main):008:0> scan 'student',{'STARTROW'=>'row*'}
    ROW                              COLUMN+CELL                                                                                  
     row1                            column=info:age, timestamp=1420817226790, value=22                                           
     row1                            column=info:name, timestamp=1420817205836, value=jack                                        
     row1                            column=info:sid, timestamp=1420817219869, value=1                                            
     row2                            column=info:age, timestamp=1420817278346, value=28                                           
     row2                            column=info:name, timestamp=1420817252182, value=terry                                       
     row2                            column=info:sid, timestamp=1420817267780, value=2                                            
     row3                            column=info:age, timestamp=1420817315351, value=18                                           
     row3                            column=info:name, timestamp=1420817294342, value=billy                                       
     row3                            column=info:sid, timestamp=1420817304621, value=3                                            
     row4                            column=info:name, timestamp=1420858768667, value=karry                                       
     row4                            column=info:sid, timestamp=1420858794556, value=4                                            
    4 row(s) in 0.2830 seconds

    多个参数可以同时使用,比如我要查询startrow = row2 并且只返回一条
    hbase(main):009:0> scan 'student',{'STARTROW'=>'row2','LIMIT'=>1}
    ROW                              COLUMN+CELL                                                                                  
     row2                            column=info:age, timestamp=1420817278346, value=28                                           
     row2                            column=info:name, timestamp=1420817252182, value=terry                                       
     row2                            column=info:sid, timestamp=1420817267780, value=2                                            
    1 row(s) in 0.1890 seconds

    STOPROW 定义查询的结束rowkey

    跟startrow类似,同上

    COLUMNS 控制返回的字段列表

    就相当于sql中的 select xx,xxx,xxx  from 这里面的列定义。比如我只需要查询所有学生的名字和年龄,不需要sid信息
    hbase(main):011:0> scan 'student',{'COLUMNS'=>['info:name','info:age'],LIMIT=>3}
    ROW                              COLUMN+CELL                                                                                  
     row1                            column=info:age, timestamp=1420817226790, value=22                                           
     row1                            column=info:name, timestamp=1420817205836, value=jack                                        
     row2                            column=info:age, timestamp=1420817278346, value=28                                           
     row2                            column=info:name, timestamp=1420817252182, value=terry                                       
     row3                            column=info:age, timestamp=1420817315351, value=18                                           
     row3                            column=info:name, timestamp=1420817294342, value=billy                                       
    3 row(s) in 0.4470 seconds

    注意写列名的时候要记得带上列簇!比如 info:name

    TIMESTAMP 使用时间来精确定位数据

    timestamp可以精确的指定某一条记录
    hbase(main):012:0> scan 'student',{'TIMESTAMP'=>1420817315351}
    ROW                              COLUMN+CELL                                                                                  
     row3                            column=info:age, timestamp=1420817315351, value=18                                           
    1 row(s) in 0.1920 seconds

    get 获取一行数据

    用get可以只获取一行数据
    hbase(main):073:0> get 'student','row1'
    COLUMN                           CELL                                                                                         
     info:age                        timestamp=1420817226790, value=22                                                            
     info:name                       timestamp=1420817205836, value=jack                                                          
     info:sid                        timestamp=1420817219869, value=1                                                             
    3 row(s) in 0.1730 seconds

    可以跟上更复杂的参数
    hbase(main):076:0> get 'student','row1',{COLUMN=>['info:name','info:sid']}
    COLUMN                           CELL                                                                                         
     info:name                       timestamp=1420817205836, value=jack                                                          
     info:sid                        timestamp=1420817219869, value=1                                                             
    2 row(s) in 0.0490 seconds
    
    hbase(main):077:0> get 'student','row1',{COLUMN=>['info:name','info:sid'],TIMESTAMP=>1420817219869,VERSION=>1}
    COLUMN                           CELL                                                                                         
     info:sid                        timestamp=1420817219869, value=1                                                             
    1 row(s) in 0.0740 seconds


    describe 查看表信息

    describe 可以查看表的信息,这个命令会常常用到
    hbase(main):013:0> describe 'student'
    DESCRIPTION                                                                       ENABLED                                     
     'student', {NAME => 'info', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', true                                        
      REPLICATION_SCOPE => '0', VERSIONS => '1', COMPRESSION => 'NONE', MIN_VERSIONS                                              
     => '0', TTL => 'FOREVER', KEEP_DELETED_CELLS => 'false', BLOCKSIZE => '65536', I                                             
     N_MEMORY => 'false', BLOCKCACHE => 'true'}                                                                                   
    1 row(s) in 7.6720 seconds

    alter 修改表的列簇

    用alter可以修改表的列簇,hbase的一个表其实全部信息就是列簇的信息了,比如我们可以增加一个列簇f2
    alter 'student', {NAME => 'f2', VERSION => 2}

    这个VERSION官方说是每个字段可以有2个版本,就是一个行的一个列元素可以存成两个值,拥有不同的version
    添加完再看下表结构
    hbase(main):057:0> describe 'student'
    DESCRIPTION                                                                       ENABLED                                     
     'student', {NAME => 'f2', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', R true                                        
     EPLICATION_SCOPE => '0', COMPRESSION => 'NONE', VERSIONS => '1', TTL => 'FOREVER                                             
     ', MIN_VERSIONS => '0', KEEP_DELETED_CELLS => 'false', BLOCKSIZE => '65536', IN_                                             
     MEMORY => 'false', BLOCKCACHE => 'true'}, {NAME => 'info', DATA_BLOCK_ENCODING =                                             
     > 'NONE', BLOOMFILTER => 'ROW', REPLICATION_SCOPE => '0', VERSIONS => '1', COMPR                                             
     ESSION => 'NONE', MIN_VERSIONS => '0', TTL => 'FOREVER', KEEP_DELETED_CELLS => '                                             
     false', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}                                                    
    1 row(s) in 0.6180 seconds

    可以看到有两个列簇,一个是f2,一个是info


    用 TTL 控制表的数据自动过期

    不过我这边用一个比较实用的例子来教大家操作alter:在实际生产环境上经常需要给表增加过期时间,方便表自动清理早期的数据,防止数据过多,毕竟能用hadoop的环境数据量那都是“海量” 
    现在我把f2这个列簇的TTL修改为20秒
    alter 'student', {NAME => 'f2', TTL => 20}

    然后再看下表信息
    hbase(main):061:0> describe 'student'
    DESCRIPTION                                                                       ENABLED                                     
     'student', {NAME => 'f2', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', R true                                        
     EPLICATION_SCOPE => '0', COMPRESSION => 'NONE', VERSIONS => '1', TTL => '20 SECO                                             
     NDS', MIN_VERSIONS => '0', KEEP_DELETED_CELLS => 'false', BLOCKSIZE => '65536',                                              
     IN_MEMORY => 'false', BLOCKCACHE => 'true'}, {NAME => 'info', DATA_BLOCK_ENCODIN                                             
     G => 'NONE', BLOOMFILTER => 'ROW', REPLICATION_SCOPE => '0', VERSIONS => '1', CO                                             
     MPRESSION => 'NONE', MIN_VERSIONS => '0', TTL => 'FOREVER', KEEP_DELETED_CELLS =                                             
     > 'false', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}                                                 
    1 row(s) in 0.1540 seconds

    可以看到f2的 TTL 被设置为20 seconds。
    然后我们测试一下添加一个记录到f2去,然后等20秒再去看下
    hbase(main):065:0> put 'student','row3','f2:grade','2'
    0 row(s) in 0.0650 seconds
    
    hbase(main):066:0> scan 'student',{STARTROW=>'row3',LIMIT=>1}
    ROW                              COLUMN+CELL                                                                                  
     row3                            column=f2:grade, timestamp=1420872179176, value=2                                            
     row3                            column=info:age, timestamp=1420817315351, value=18                                           
     row3                            column=info:name, timestamp=1420817294342, value=billy                                       
     row3                            column=info:sid, timestamp=1420817304621, value=3                                            
    1 row(s) in 0.0630 seconds
    
    hbase(main):067:0> scan 'student',{STARTROW=>'row3',LIMIT=>1}
    ROW                              COLUMN+CELL                                                                                  
     row3                            column=info:age, timestamp=1420817315351, value=18                                           
     row3                            column=info:name, timestamp=1420817294342, value=billy                                       
     row3                            column=info:sid, timestamp=1420817304621, value=3                                            
    1 row(s) in 0.1370 seconds

    会看到刚添加进去的时候row2还有 f2:grade的数据,但是过了一会儿去看就没了

    使用alter删除列簇

    使用alter删除列簇的操作是带上一个METHOD参数,并写值为 delete
    hbase(main):068:0> alter 'student', {NAME => 'f2', METHOD=>'delete'}
    Updating all regions with the new schema...
    0/1 regions updated.
    1/1 regions updated.
    Done.
    0 row(s) in 3.9750 seconds
    
    hbase(main):069:0> describe 'student'
    DESCRIPTION                                                                       ENABLED                                     
     'student', {NAME => 'info', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', true                                        
      REPLICATION_SCOPE => '0', VERSIONS => '1', COMPRESSION => 'NONE', MIN_VERSIONS                                              
     => '0', TTL => 'FOREVER', KEEP_DELETED_CELLS => 'false', BLOCKSIZE => '65536', I                                             
     N_MEMORY => 'false', BLOCKCACHE => 'true'}                                                                                   
    1 row(s) in 0.2210 seconds

    count 统计表中的数据

    跟传统的关系型数据库不一样,这个命令可能会执行很久
    hbase(main):082:0> count 'student'
    4 row(s) in 0.6410 seconds
    
    => 4

    这个命令还有一个很奇怪的功能,就是在统计的时候可以每隔X行显示一下数据的rowkey,可能是方便统计的时候看下统计到哪里了,比如我分别用间隔2行跟间隔1行做了实验
    hbase(main):083:0> count 'student',2
    Current count: 2, row: row2                                                                                                   
    Current count: 4, row: row4                                                                                                   
    4 row(s) in 0.0480 seconds
    
    => 4
    hbase(main):084:0> count 'student',1
    Current count: 1, row: row1                                                                                                   
    Current count: 2, row: row2                                                                                                   
    Current count: 3, row: row3                                                                                                   
    Current count: 4, row: row4                                                                                                   
    4 row(s) in 0.0650 seconds
    
    => 4



    list 查看数据库中的所有表

    用list可以列出当前hbase中的所有表
    hbase(main):079:0> list
    TABLE                                                                                                                         
    employee                                                                                                                      
    employee2                                                                                                                     
    student                                                                                                                       
    3 row(s) in 0.2020 seconds
    
    => ["employee", "employee2", "student"]

    status 命令

    查询服务状态
    hbase(main):013:0> status
    1 servers, 0 dead, 3.0000 average load
    hbase(main):070:0> list
    TABLE                                                                                                                         
    employee                                                                                                                      
    employee2                                                                                                                     
    student                                                                                                                       
    3 row(s) in 0.6380 seconds
    
    => ["employee", "employee2", "student"]


    version 

    查询版本号

    whoami

    看连接用户
    hbase(main):014:0> whoami
    root (auth:SIMPLE)

    truncate 快速清除数据

    跟一般数据库中的truncate不太一样,如果你执行 truncate,hbase就是帮你把表停掉,删掉再重建一次,只是这个动作不用你手动做了而已
    hbase(main):086:0> truncate 'student'
    Truncating 'student' table (it may take a while):
     - Disabling table...
     - Dropping table...
     - Creating table...
    0 row(s) in 4.6330 seconds

    主要的命令就介绍到这里,更详细的命令参考 http://wiki.apache.org/hadoop/Hbase/Shell

    参考资料

    • http://wiki.apache.org/hadoop/Hbase/Shell



    展开全文
  • 大数据hadoop入门技术,8天课程,资料齐全,涉及hadoop入门介绍、hdfs分布式文件系统、以及mapreduce等技术,分布式集群的搭建
  • 原帖地址:http://blog.csdn.net/nsrainbow/article/details/36629741 接上一个教程:http://blog.csdn.net/nsrainbow/article/details/36629339 本教程是在 Centos6 下使用yum来安装 CDH5 ...
  • Hadoop教程(一) Hadoop入门教程 1 Hadoop入门教程 Hadoop是Apache开源组织的一个分布式计算开源框架(http://hadoop.apache.org/),用java语言实现开源软件框架,实现在大量计算机组成的集群中对海量数据进行分布式...
  • 大数据学习菜鸟Hadoop快速入门基础教程汇总详细解答 1、大数据 大数据是一门概念,也是一门技术,是以Hadoop为代表的大数据平台框架上进行各种数据分析的技术。 大数据包括了以Hadoop和Spark为代表的基础大数据...
  • 根据cdh官方文档的教程做一个简单的例子,但是cdh的教程写的不严谨,有很多坑等着你去跳,所以我改造了一下写成了这篇文章
  • Hadoop也有web管理控制台,而且还很华丽,它的名字叫HUE。通过HUE可以管理Hadoop常见的组件。下面用一幅图说明HUE能管理哪些组件。除了Oozie,LDAP SAML和Solr以外,前面的课程都说过了,Oozie是一个工作流组件,...
  • Hadoop 入门教程(超详细)

    千次阅读 2020-04-18 23:49:52
    Hadoop 框架1.1 Hadoop 介绍1.1.1 Hadoop 是什么1.1.2 Hadoop 的发展历史1.1.3 Hadoop 三大发行版本1.1.4 Hadoop 的优势1.1.5 Hadoop 的组成 1. Hadoop 框架 1.1 Hadoop 介绍 1.1.1 Hadoop 是什么 Hadoop 是一个由...
  • 具体的讲解一下如何将hadoop安装成HA模式
  • 让大家可以在hadoop上写sql语句。但是最好不要拿Hive进行实时的查询。因为Hive的实现原理是把sql语句转化为多个Map Reduce任务所以Hive非常慢,官方文档说Hive 适用于高延时性的场景而且很费资源。
  • hadoop是一个分布式系统,跟hadoop配合的一般也是分布式系统,分布式系统带来的就是分布式日志,分布式日志带来1. 日志数量多 2. 日志数据量大, 所以无论是采集分布式的日志还是存储海量的日志到hadoop,都需要一个...
  • 安装 sqoop 分为服务端和客户端,先安装服务端 $ sudo yum install sqoop2-server 再安装客户端 $ sudo yum install sqoop2-client 服务端 配置 分为 MRv1 和 YARN(Map Reduce 2代)两种情况 YARN alternatives --set...
  • 教程介绍Impala的安装,使用和JDBC调用。为什么用 Impala? 因为Hive 太慢了!Impala 也可以执行SQL,但是比Hive的速度快很多。为什么Impala可以比Hive快呢?因为Hive采用的是把你的sql转化成hadoop 的 MapReduce...
  • 教程是在 Centos6 下使用yum来安装 CDH5 版本的 hadoop教程,适合新手并且只有一个linux服务器的情况下最快速度的上手hadoop
  • 我们这个教程是在 centos 上安装cdh的教程,而且使用的是yum方式,不建议使用界面化方式,因为用过linux的都知道,命令行出错更少,其实更轻松更靠谱。 安装之前 1. 安装jdk cdh5 对应的jdk 是 ...
  • 我突然发现我的教程写的顺序很凌乱啊,没有先介绍Hive 的安装,这点向大家道歉,我后面补上。 数据准备 mysql 在mysql 里面建立表 employee继续写,其实mysql 导入导出 hdfs 对于实际项目开发没啥用的,但是那个可以...
  • 菜鸟Hadoop快速入门

    2020-10-10 15:49:40
    大数据是一门概念,也是一门技术,是以Hadoop为代表的大数据平台框架上进行各种数据分析的技术。 大数据包括了以Hadoop和Spark为代表的基础大数据框架,还包括实时数据处理,离线数据处理,数据分析,数据挖掘和用...
  • 看了之前的教程,会发现多处出现zookeeper,比如hadoop的 auto failover 得用 zookeeper ,Hbase 的 RegionServer 也得用zookeeper。其实不止hadoop,包括现在小有名气的 Storm 用的也是zookeeper。那么zookeeper ...
  • Executing SQL statement: SELECT t.* FROM `employee` AS t LIMIT 1 14/12/05 08:49:36 INFO orm.CompilationManager: HADOOP_MAPRED_HOME is /usr/lib/hadoop-mapreduce Note: /tmp/sqoop-wlsuser/compile/d16eb...
  • 这次给大家介绍一下Hbase的概念和安装教程
  • 分类: Alex的Hadoop菜鸟教程2015-03-04 15:30 904人阅读 评论(1) 收藏 举报 hadoopooziemapreduce 目录(?)[+] 本文基于 Centos6.x + CDH5.x Oozie是什么 简单的说Oozie是一个工作流...
  • Spark是Apache的顶级项目。项目背景是 Hadoop 的 MapReduce 太挫太慢了,于是有人就做了Spark,目前Spark声称在内存中比Hadoop快100倍,在磁盘上比Hadoop快10倍。
  • docker部署hadoop伪分布式搭建环境成功的教程

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,330
精华内容 532
关键字:

hadoop菜鸟教程