hadoop使用(三)

安装hbase

首先下载hbase的最新稳定版本

http://www.apache.org/dyn/closer.cgi/hbase/

安装到本地目录中,我安装的是当前用户的hadoop/hbase中

tar -zxvf hbase-0.90.4.tar.gz

单机模式

修改配置文件

conf/hbase_env.sh

配置JDK的路径

修改conf/hbase-site.xml

<configuration>
 <property>
 <name>hbase.rootdir</name>
 <value>file:///home/${user.name}/hbase-tmp</value>
 </property>
</configuration>

完成后启动

bin/start-hbase.sh

启动后

starting master, logging to /home/lgstar888/hadoop/hbase0.9/bin/../logs/hbase-lgstar888-master-ubuntu.out
然后执行

bin/hbase shell

输入status


如果输入exit则退出

引用一篇文章,写的很清晰:

http://www.linuxidc.com/Linux/2011-10/45706.htm

Hadoop与Google一样,都是小孩命名的,是一个虚构的名字,没有特别的含义。从计算机专业的角度看,Hadoop是一个分布式系统基础架构,由 Apache基金会开发。Hadoop的主要目标是对分布式环境下的“大数据”以一种可靠、高效、可伸缩的方式处理。设想一个场景,假如您需要grep一 个100TB的大数据文件,按照传统的方式,会花费很长时间,而这正是Hadoop所需要考虑的效率问题。   关于Hadoop的结构,有各种不同的说法。我们这里简单的理解为Hadoop主要由三部分组成:HDFS(Hadoop Distributed File System),MapReduce与Hbase。

1.Hadoop组件之一:HDFS分布式文件系统具有哪些优点?

  HDFS作为一种分布式文件系统,它和现有的分布式文件系统有很多共同点。比如,Hadoop文件系统管理的物理存储资源不一定直接连接在本地 节点上,而是通过计算机网络与节点相连。对于Client端而言,HDFS就像一个传统的分级文件系统,可以创建、删除、移动或重命名文件等等。与此同 时,HDFS与其他的分布式文件系统的区别也是显而易见的。

  首先,HDFS设计目标之一是适合运行在通用硬件(commodity hardware)上的分布式文件系统。HDFS假设的硬件错误不是异常,而是常态。因为HDFS面向的是成百上千的服务器集群,每台服务器上存储着文件 系统的部分数据,并且这些机器的价格都很低廉。这就意味着总是有一部分硬件因各种原因而无法工作。因此,错误检测和快速、自动的恢复是HDFS最核心的架 构目标。从这个角度说,HDFS具有高度的容错性。

  第二,HDFS的另一个设计目标是支持大文件存储。与普通的应用不同,HDFS应用具有很大的数据集,一个典型HDFS文件大小一般都在G字节 至T字节。这就意味着HDFS应该能提供比较高的数据传输带宽与数据访问吞吐量。相应的,HDFS开放了一些POSIX的必须接口,容许流式访问文件系统 的数据。

  第三,HDFS还要解决的一个问题是高数据吞吐量。HDFS采用的是“一次性写,多次读”这种简单的数据一致性模型。换句话说,文件一旦建立后写入,就不需要再更改了。网络爬虫程序就很适合使用这样的模型。

  第四,移动计算环境比移动数据划算。HDFS提供了API,以便把计算环境移动到数据存储的地方,而不是把数据传输到计算环境运行的地方。这对于数据大文件尤其适用,可以有效减少网络的拥塞、提高系统的吞吐量。

HDFS的体系结构与工作流程

  下面简单看一下HDFS的结构。图1所示为HDFS的体系结构图。HDFS采用的是Master/Slave架构。

  NameNode节点作为Master服务器,有三部分功能。第一:处理来自客户端的文件访问。第二:管理文件系统的命名空间操作,如'打开'、'关闭'、'重命名'等。第三:负责数据块到数据节点之间的映射。从这个意义上说,它扮演中心服务器的角色。

  DataNode节点作为Slave服务器,同样有三部分功能。第一:管理挂载在节点上的存储设备。第二:响应客户端的读写请求。第三:从内部 看,每个文件被分成一个或多个数据块,被存放到一组DataNode,在Namenode的统一调度下进行数据块的创建、删除和复制。


  图1 HDFS体系结构图

  HDFS采用Java语言开发,因此任何支持Java的机器都可以部署Namenode或Datanode。相应地,GNU/Linux操作系 统支持Namenode与Datanode。一个典型的部署场景是,一台GNU/Linux操作系统上运行一个Namenode实例,作为Master中 心服务器。而集群中的其它GNU/Linux操作系统分别运行一个Datanode实例,作为Slave服务器集群。

2.Hadoop组件之二:什么是MapReduce编程模型, MapReduce的工作流程是什么?

  MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。MapReduce的设计目标是方便编程人员在不熟悉分布式并行编程的情况下,将自己的程序运行在分布式系统上。

  MapReduce的命名规则由两个术语组成,分别是Map(映射)与Reduce(化简)。这些术语来自于列表处理语言, 如:LISP,Scheme,或ML。从概念上来讲,MapReduce将输入元素列表(Input List)转换成输出元素列表(Output List),按照Map与Reduce规则各一次。

  从MapReduce框架的实现角度看,MapReduce程序有着两个组件:一个实现了 Mapper,另一个实现了Reducer。

  第一次叫Mapping,如图2所示。MapReduce将Input List作为Mapping函数的输入参数,经过处理,把结果返回给Output List。举例来说,有一个函数toUpper(str),用来返回输入字符串的大写版本。那么这里的Input List指的是转换前的常规字符串列表,Mapping Function指的是toUpper函数,而Output List指的是转换后的大写字符串列表。值得注意的是,在这里Mapping并没有改变输入字符串列表,而是返回一个新的字符串列表。


  图2 Map函数处理

  第二次叫Reducing,如图3所示。MapReduce将Input List作为Reducing函数的输入参数,经过迭代处理,把这些数据汇集,返回一个输出值给Output Value。从这个意义上来说,Reducing一般用来生成”总结“数据,把大规模的数据转变成更小的总结数据。例如,"+"可以用来作一个 reducing函数,去返回输入数据列表的值的总和。


  图3 Reduce函数处理

  从工作流程来讲,MapReduce对应的作业Job首先把输入的数据集切分为若干独立的数据块,并由Map组件以Task的方式并行处理。处 理结果经过排序后,依次输入给Reduce组件,并且以Task的形式并行处理。MapReduce对应的输入输出数据由HDFS的DataNode存 储。MapReduce对应的Job部署在Master服务器,由Master JobTracker负责Task的调度,监控,重新执行失败的任务等等。MapReduce对应的Job部署在若干不同的Slave服务器,每个集群节 点含一个slave TaskTracker,负责执行由master指派的任务。

  Hadoop框架由Java实现的,它提供了两种主要工具。Hadoop Streaming是一种运行作业的实用工具,它允许用户创建和运行任何可执行程序(例如:Shell工具)来做为mapper和reducer。 Hadoop Pipes是一个与SWIG兼容的C++ API (没有基于JNITM技术),它也可用于实现Map/Reduce应用程序。这样,开发人员就可以利用MapReduce框架,开发分布式应用程序,运行 在由上千个商用机器组成的大型集群上,并以一种可靠容错的方式并行处理上T级别的数据集。

3.Hadoop组件之三:什么是面向列开源分布式数据库Hbase?

  HBase是一个分布式的、面向列的开源数据库,由Apache基金会开发。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存 储的数据库。它基于列的而不是基于行的模式。用户存储数据行在一个表里。一个数据行拥有一个可选择的键和任意数量的列。用户可根据键访问行,以及对于一系 列的行进行扫描和过滤。HBase一个可以横向扩张的表存储系统,能够为大规模数据提供速度极快的低等级更新。主要用于需要随机访问,实时读写大数据 (Big Data)。这正是信息系统所需要的功能。

  下面的例子演示的是将原来存放在MySQL中Blog中的数据迁移到HBase中的过程:

  图4为MySQL中现有的表结构:表Blogtable表示博客本身,包括5个字段,BlogId为每位用户对应的博客ID号,类型为Int, 作为主键字段;Author为该用户的博客名称,类型为Varchar;Title为该用户的博客签名,类型为Varchar;URL为博客网址链接,类 型为Varchar;Text为博客的内容,类型为Varchar。Comment表示博客评论,包括5个字段。ID为发表评论的用户ID,类型为 Int,作为主键字段;BlogId为博客的原文ID,类型为Varchar。其中,BlogId作为Comment表的外键,指向表Blogtable 的主键。Title为评论标题,类型为Varchar;Author为发表该评论的用户名称,类型为Varchar;Text字段为评论内容,类型为 Varchar。


  图4 MySQL表结构

  图5 为迁移HBase中的表结构:HBase以表的形式存储数据。表有行和列组成。列划分为若干个列族(row family)。表Blogtable表示博客本身。ID为Row Key,即Table的主键,用来检索记录。Table在水平方向有一个或者多个Column Family组成。表BlogTable包含5个Column Family, Info的数据结构分为Info:Author,Info:Title,Info:URL。如果想添加其它属性X,则对应的结构为Info:X。需要说明 的是,Column Family支持动态扩展,无需预先定义Column的数量以及类型,但是,所有Column均以二进制格式存储,用户需要自行进行类型转换。


  图5 HBase表结构

  总之,Hbase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。简单的理解,Hbase介于nosql和 RDBMS之间。Hbase仅能通过主键(row key)和主键的range来检索数据,不支持条件查询以及排序等,仅支持单行事务。Habase主要用来存储非结构化和半结构化的松散数据。针对 Hbase的不足,Hadoop的一个数据仓库工具Hive对此做出了弥补。Hive可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询 功能,并将SQL语句转换为MapReduce任务运行。针对Hbase单行事务的限制,Hive也提供了扩展。据说,Facebook之所以选择了 Hbase,是因为他们HBase适用于处理以下两种类型的数据模式:1.一小组经常变化的临时数据;2.一组不断增加但很少访问的数据。

Hadoop为企业来带了什么?

  如今,“大数据”这一术语在IT经理人中变得越来越流行。美国国家海洋与大气管理局NOAA利用“大数据”进行气象、生态系统、天气和商务研 究。《纽约时报》使用“大数据”工具进行文本分析和Web信息挖掘。迪斯尼则利用它们关联和了解跨不同商店、主题公园和Web资产的客户行为。

  “大数据”不仅适用于大型企业,而是适用于各种不同规模的企业。例如,通过评估某位客户在网站上的行为,来更好地了解他们需要什么支持或寻找什么产品,或者弄清当前天气和其他条件对于送货路线和时间安排的影响。

  面对“大数据”,Hadoop为揭示深奥的企业与外部数据的关键内幕提供了基础。从技术上看,Hadoop分布式文件系统(HDFS)保证了大 数据的可靠存储,而另一Hadoop核心组件MapReduce则提供高性能并行数据处理服务。这两项服务提供了一个使对结构化和复杂“大数据”的快速、 可靠分析变为现实的基础。

  Hadoop已经迅速成长为首选的、适用于非结构化数据的大数据分析解决方案。基于Hadoop、利用商品化硬件对海量的结构化和非结构化数据 进行批处理,给数据分析领域带来了深刻的变化。通过挖掘机器产生的非结构化数据中蕴藏的知识,企业可以做出更好的决策,促进收入增长,改善服务,降低成 本。

  Google与Hadoop有着千丝万缕的联系。如前所述,Hadoop主要是由HDFS、MapReduce和Hbase组成。而HDFS是 Google File System(GFS)的开源实现,MapReduce是Google MapReduce的开源实现,HBase是Google BigTable的开源实现。Hadoop分布式框架很有创造性,而且有极大的扩展性,使得Google在系统吞吐量上有很大的竞争力。因此Apache 基金会用Java实现了一个开源版本,支持FedoraUbuntu等Linux平台。

  考虑到Hadoop在应对大规模非结构型数据中所起到的重要作用,微软也不得不放下架子,近日宣布开发一个兼容Windows Server与Windows Azure平台的Hadoop开源版本。

  IBM宣布在Hadoop上建立新的存储架构,作为群集运行DB2或Oracle数据库,目的是让应用程序,支持高性能分析,数据仓库应用程序和云计算的目的。

  EMC也推出了世界上第一个定制的、高性能的Hadoop专用数据协同处理设备——Greenplum HD数据计算设备,为客户提供了最强大、最高效率的方法,充分挖掘大数据的价值。

  互联网搜索巨头百度也在考虑使用Hadoop。不过,出于性能与安全的考虑,百度在采用Hadoop架构的时候,将Hadoop计算层进行了重新编写。

  总结:

  Hadoop作为一种分布式基础架构,可以使用户在不了解分布式底层细节的情况下,开发分布式程序。

  关于Hadoop的价值,思科的James Urquhart指出:“Hadoop可以说是不涉及任何现有专利的开源项目在企业软件方面所取得的首个里程碑式成功。”在业界,Hadoop也赢得“庞 大数据问题的通用解决方案”的头衔。我们不得不说,Hadoop前途不可估量。

时间: 2024-09-13 02:37:12

hadoop使用(三)的相关文章

优酷数据架构师:搭建Hadoop平台三步走

文章讲的是优酷数据架构师:搭建Hadoop平台三步走,2013年11月22-23日,作为国内唯一专注于Hadoop技术与应用分享的大规模行业盛会,2013 Hadoop中国技术峰会(China Hadoop Summit 2013)将于北京福朋喜来登集团酒店隆重举行.届时,来自国内外各行业领域的近千名CIO.CTO.架构师.IT经理.咨询顾问.工程师.Hadoop技术爱好者,以及从事Hadoop研究与推广的IT厂商和技术专家将共襄盛举. ▲点击进入Haoop中国技术峰会 Haoop中国技术峰会由

数据控使用Hadoop的三种最常用方式

就在几周前,Apache Hadoop 2.0正式发布,这是 Hadoop领域巨大的里程碑,因为它开启了史无前例的数据存储方式革命.Hadoop保留它典型的"大数据"基础技术,但它是否适合当下数据库及数据仓库的使用方式?又是否有一种通用模式可以切实降低固有的使用复杂性呢? Hadoop使用的一般模式 Hadoop最初的构想是为像Yahoo.Google.Facebook等这样的公司以非常低的成本来解决大量数据的存储问题.现在,它正被越来越多地引入企业环境中处理新不同数据类型.机器生成的

独家 | 一文读懂Hadoop(三):Mapreduce

随着全球经济的不断发展,大数据时代早已悄悄到来,而Hadoop又是大数据环境的基础,想入门大数据行业首先需要了解Hadoop的知识.2017年年初apache发行了Hadoop3.0,也意味着一直有一群人在对Hadoop不断的做优化,不仅如此,各个Hadoop的商业版本也有好多公司正在使用,这也印证了它的商业价值. 读者可以通过阅读"一文读懂Hadoop"系列文章,对Hadoop技术有个全面的了解,它涵盖了Hadoop官网的所有知识点,并且通俗易懂,英文不好的读者完全可以通过阅读此篇文

Docker将会改变Hadoop,变的更快更容易

本文讲的是Docker将会改变Hadoop,变的更快更容易,[编者的话] 最近在San Jose,Clif开幕的hadoop峰会上会有关于Docker和Hadoop的话题讨论,越来越多的创业公司致力于使用Docker技术来简化hadoop应用开发部署的速度.目前有两个方向:1)使用Docker容纳Hadoop stack:2)通过YARN来部署基于Docker开发的容器化应用.  本周,hadoop峰会召开,其中着重讨论了新平台(例如docker)将会如何在hadoop环境下改变大数据分析行业.

hadoop 2.7.3 集群搭建遇到问题以及解决

系统安装相关 center os安装到系统中需要用软碟通制作一个启动盘,先选择一个镜像,然在在启动菜单选择写入硬盘 出现错误 center os 7 starting timeout报了一长溜后出现dev/root dosnot exist 这是没有找到镜像文件,在报错界面cd dev,可以看到挂载的设备,有几十个,sd开头的是存储相关.我这边出现的是sda sda4 sdb.重启,在选择安装界面按e进入编辑,将vmlinuz initrd=initrd.imginst.stage2=hd:LA

基于Hadoop的云盘系统客户端技术难点之二 HDFS文件访问控制

作者:张子良 版权所有,转载请注明出处 一.概述 Hadoop开源技术框架在实际业务应用中,其早期的安全机制饱受诟病,具体到HDFS应用方面的问题,主要包括以下几个方面: 1.用户到服务器的认证问题 (1)Namenode上没有用户认证:用户只要知道NameNode服务地址和端口信息,就可以访问HDFS,并获取文件namespace信息. (2)Datanode上没有认证机制:Datanode对读入输出并没有认证,导致如果客户端知道Blockid,就可以任意的访问Datanode上的Block数

Hadoop 集群搭建

在图书馆看到关于 Hadoop 的书,刚好有空,就借回来了看看.然后在寝室尝试搭建环境,用了一天才弄好. Hadoop 的运行模式有 单机模式.伪分布式模式.完全分布式模式.我选择的时完全分布式模式安装. 因此需要多台机器.但哪来的多台机器呢,当然是虚拟机啦. 因为 Hadoop 只能运行在 *nix 环境中,因此我在 Ubuntu 中又用 VirtualBox 安装了两台虚拟机.一台作为 master, 一台作为 slave1. 因为怕搞坏宿主机器,因此没在物理机上折腾.集群,通常是有好多台机

在ubuntu部署hadoop之单机模式与伪分布式模式部署

这几天刚接触Hadoop,在学习如何搭建一个Hadoop集群.对于初学者来说,环境搭建还是比较麻烦的,我这里说一下我的配置方法,仅供大家参考. 我的环境是ubuntu12.10+hadoop1.1.0. Hadoop的运行模式有以下三种. 单机模式(standalone) 单机模式是Hadoop的默认模式.当首次解压Hadoop的源码包时,Hadoop无法了解硬件安装环境,便保守地选择了最小配置.在这种默认模式下所有3个XML文件均为空.当配置文件为空时,Hadoop会完全运行在本地.因为不需要

跟我一起hadoop(1)-hadoop2.6安装与使用

伪分布式 hadoop的三种安装方式: Local (Standalone) Mode Pseudo-Distributed Mode Fully-Distributed Mode 安装之前需要 $ sudo apt-get install ssh       $ sudo apt-get install rsync 详见:http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.ht