首页 > 其他分享 >Hadoop 2.0 大家族(二)

Hadoop 2.0 大家族(二)

时间:2024-06-23 11:31:08浏览次数:3  
标签:main 大家族 Hadoop Pig member iClient hbase 2.0 Hbase

目录


三、Hbase

在这里插入图片描述
  Hbase是基于Hadoop的开源分布式数据库,它以Google的BigTable为原型,设计并实现了具有高可靠性高性能列存储可伸缩实时读写的分布式数据库系统。

  • HBase适合于存储非结构化数据
  • Hbase是基于列的而不是基于行的模式
  • Hbase在Hadoop之上提供了类似于BigTable的能力

(一)Hbase简介

1、Hbase数据模型

在这里插入图片描述
  称用户对数据的组织形式为数据的逻辑模型,称Hbase里数据在HDFS上的具体存储形式为数据的物理模型。

(1)逻辑模型

在这里插入图片描述
  Hbase以表的形式存储。表中仅有一行数据,行的唯一标识为com.cnn.www,对这行数据的每一次逻辑修改都有一个时间戳关联对应。表中共有四列:contents:html,anchor:cnnsi.com,anchor:my.look.ca,mime:type,每一列以前缀的方式给出其所属的列族。

在这里插入图片描述
  行键是数据行在表中的唯一标识,并作为检索记录的主键。在Hbase中访问表中的行有三种方式:通过单个行健访问、给定行健的范围访问、全表扫描。
  Hbase提供了两个版本的回收方式:一是对每个数据单元,只存储指定个数的最新版本;二是保存最近一段时间内的版本(如七天),客户端可以按需查询。
  元素由行健、列(<列族>:<限定符>)和时间戳唯一确定,元素中的数据以字节码的形式存储,没有类型之分。

(2)物理模型

在这里插入图片描述
  Hbase是按照列存储的稀疏行/列矩阵。表中的空值是不被存储的,如果没有指名时间戳,则返回指定列的最新数据值,可以随时向表中的任何一个列添加新列,而不需要事先声明。

在这里插入图片描述
2、Hbase架构

  Hbase采用master/slave架构,主节点运行的服务称为HMaster,从节点服务称为HRegionServer,底层采用HDFS存储数据。

在这里插入图片描述
(1)Client

  Client端使用Hbase的RPC机制与HMaster和HRegionServer进行通信。

(2)ZooKeeper

  存储了ROOT表的地址、HMaster的地址和HRegionServer地址。

(3)HMaster

  Hbase主节点,将Region分配给HRegionServer,协调HRegionServer的负载并维护集群状态。

(4)HRegionServer

  HRegionServer主要负责响应用户I/O请求,向HDFS文件系统中读写数据。

(二)Hbase入门

1、Hbase部署

(1)部署前提

  除了要求集群已安装cloudera-cdh-5-0.x86_64.rpm外,Hbase 还要求集群已部署好ZooKeeper集群和Hadoop集群。

(2)Hbase部署规划

  cMaster为Hbase主节点,cSlave0~2为Hbase从节点,iClient安装Hbase客户端。

(3)部署Hbase

[root@iClient ~]# sudo yum install hbase                             #iClient安装Hbase客户端
[root@cMaster ~]# sudo yum install hbase-master                      #cMaster安装主服务HMaster
[root@cSlave0 ~]# sudo yum install hbase-regionserver                #cSlave0安装从服务
[root@cSlave1 ~]# sudo yum install hbase-regionserver                #cSlave1安装从服务
[root@cSlave2 ~]# sudo yum install hbase-regionserver                #cSlave2安装从服务

(4)配置Hbase

  编辑/etc/hbase/conf/hbase-site.xml将下面内容添加到configuration便笺切记iClient,cMaster,cSlave0~2这五台机器都要进行配置,且要求配置相同。

<property><name>hbase.cluster.distributed</name><value>true</value></property>
<property><name>hbase.rootdir</name><value>hdfs://CMaster:8020/hbase</value></property>
<property>
  <name>hbase.zookeeper.quorum</name><value>cSlave0,cSlave1,cSlave2</value>
</property>

(5)HDFS里新建Hbase存储目录

[root@iClient ~]# sudo -u hdfs hdfs dfs -mkdir /hbase
[root@iClient ~]# sudo -u hdfs hdfs dfs chown -R hbase /hbase

(6)启动Hbase集群

  共分三步,即启动ZooKeeper集群(参考ZooKeeper部署),启动主服务HMaster和启动从服务HRegionServer。

[root@cMaster ~]# sudo service hbase-master start                #cMaster开启主服务命令
$ sudo service hbase-regionserver start                          #cSlave0,cSlave1,cSlave2开启regionserver

  Hbase启动好后,在iClient上浏览器打开“cMaster:60010”,即可以看到Hbase的Web页面。

2、Hbase接口

  Hbase提供了诸多访问接口,下面简单罗列各种访问接口。
(1)Native Java API:最常规和高效的访问方式,适合Hadoop MapReduce Job并行批处理Hbase表数据。
(2)Hbase Shell:Hbase的命令行工具,最简单的接口,适合管理、测试时使用。
(3)Thrift Gateway:利用Thrift序列化技术,支持C++,PHP,Python等多种语言,适合其他异构系统在线访问Hbase表数据。
(4)REST Gateway:支持REST 风格的HTTP API访问Hbase,解除了语言限制。
(5)Pig:可以使用Pig Latin流式编程语言操作Hbase中的数据,和Hive类似,本质上最终也是编译成MR Job来处理Hbase表数据,适合做数据统计。
(6)Hive:同Pig类似,用户可以使用类SQL的HiveQL语言处理Hbase表中数据,当然最终本质依旧是HDFS与MR操作。

【例2】 按要求完成问题:
① 假定MySQL里有member表,要求使用Hbase的Shell接口,在Hbase中新建并存储此表。
② 简述Hbase是否适合存储问题①中的结构化数据,并简单叙述Hbase与关系型数据库的区别。

身份ID姓名性别年龄教育职业收入
201401aa021e0p3m
201402bb122e1p21
201403cc123e2p1m

解:

  下面将姓名、性别、年龄这三个字段抽象为个人属性(personalAttr),教育、职业、收入抽象为社会属性(socialAttr),personalAttr列族包含name、gender和age三个限定符;同理socialAttr下包含edu、prof、inco三个限定符。

在这里插入图片描述
  按上述思路,iClient上依次执行如下命令:

[root@iClient ~]# hbase shell                                                 #进入Hbase命令行
hbase(main):001:0> list                                                       #查看所有表
hbase(main):002:0> create 'member','id','personalAttr','socialAttr'           #创建member表
hbase(main):003:0> list
hbase(main):004:0> scan 'member'                                              #查看member内容
hbase(main):005:0> put 'member','201401','personalAttr:name','aa'             #向member表中插入数据
hbase(main):006:0> put 'member','201401','personalAttr:gender','0'
hbase(main):007:0> put 'member','201401','personalAttr:age','21'
hbase(main):008:0> put 'member','201401','socialAttr:edu','e0'
hbase(main):009:0> put 'member','201401','socialAttr:job','p3'
hbase(main):010:0> put 'member','201401','socialAttr:imcome','m'
hbase(main):011:0> scan 'member'
hbase(main):012:0> disable 'member'                                           #废弃member表
hbase(main):013:0> drop 'member'                                              #删除member表
hbase(main):014:0> quit

  下面简单罗列Hbase和关系型数据库的区别:

  • Hbase只提供字符串这一种数据类型,其他数据类型的操作只能靠用户自行处理,而关系型数据库有丰富的数据类型;
  • Hbase数据操作只有很简单的插入、查询、删除、修改、清空等操作,不能实现表与表关联操作,而关系型数据库有大量此类SQL语句和函数;
  • Hbase基于列式存储,每个列族都由几个文件保存,不同列族的文件是分离的,关系型数据库基于表格设计和行模式保存;
  • Hbase修改和删除数据实现上是插入带有特殊标记的新记录,而关系型数据库是数据内容的替换和修改;
  • Hbase为分布式而设计,可通过增加机器实现性能和数据增长,而关系型数据库很难做到这一点。

四、Pig

(一)Pig简介

1、Pig基本框架

  Pig相当于一个Hadoop的客户端,它先连接到Hadoop集群,之后才能在集群上进行各种操作。Pig的基本框架如下图所示。

在这里插入图片描述
2、Pig语法

(1)Pig Latin数据类型

① 基本数据类型

  和大部分程序语言类似,Pig的基本数据类型为int、long、float、double、chararray和bytearray。

② 复杂数据类型

  字符串或基本类型与字符串的组合,主要包含以下四种。Filed、Tuple、Bag、Map。

(2)Pig Latin运算符

  Pig Latin提供了算术、比较、关系等运算符,这些运算符的含义和用法与其他语言(C,Java)相差不大。算术运算符包括加 (+),减 (-),乘 (*),除 (/),取余 (%) 和三目运算符(?:)。比较运算符包括等于 (==),不等 (!=)。

(3)Pig Latin函数

  Pig Latin是由一系列函数(命令)构成的数据处理流,这些函数或是内置或是用户自定义,下表是最常用的几个命令。

操作名称功能
LOAD载入待处理数据
FOREACH逐行处理Tuple
FILTER过滤不满足条件的Tuple
DUMP将结果打印到屏幕
STORE将结果保存到文件

(二)Pig入门

1、Pig部署

  由于Pig只相当于Hadoop的一个客户端,用户所写的Pig Latin经翻译器翻译后再提交集群执行,故只要在客户机上部署Pig即可。

[root@iClient ~]# sudo yum install pig

2、Pig访问接口

  Pig提供了类Shell方式的访问接口,用户在Linux Shell下输入Pig,然后回车即可进入Pig命令行接口(即grunt)。

【例3】 按要求完成问题:① 进入Pig命令行,查看并练习常用命令。② 使用Pig Latin实现WordCount。

解:

  问题①即在Pig命令行中输入help即可。对于问题②假定cMaster上存在用户joe,并且joe用户在HDFS里有文件夹input(即相对路径为input,绝对路径为/user/joe/input),此目录下有一些文本文件,现用Pig实现此文件夹下所有文件里单词计数。

[root@iClient ~]# sudo -u joe pig                        #进入joe用户的Pig命令行
grunt> help;                                             #查看Pig操作 
grunt> A=load 'input;                                    #载入待处理文件夹input
grunt> B=foreach A generate flatten(TOKENIZE((chararray)$0)) as word;          #划分单词
grunt> C=group B by word;                                #指定按单词聚合,即同一个单词到一起
grunt> D=foreach C generate COUNT(B),group;              #同一个单词出现次数相加
grunt> store D into 'out/wc-19';                         #将处理好的文件存入HDFS下/user/joe/out/wc-19
grunt> dump D into;                                      #将处理结果D打印到屏幕

  执行时,用户可以将结果存入HDFS,也可以将结果打印到屏幕,并且,只有最后两条语句才会触发MapReduce程序,这种“懒”策略有利于提高集群利用率。

标签:main,大家族,Hadoop,Pig,member,iClient,hbase,2.0,Hbase
From: https://blog.csdn.net/Morse_Chen/article/details/139841932

相关文章

  • anaconda安装①tensorflow-cpu 1.12.0py3.6②tensorflow-gpu 2.4.0③pytorch 2.4.1 通
    本机环境:Win10、rtx4060tianaconda常用命令condaenvlist#查看已有环境名称condaenvlistcondaactivateenv_name #激活环境condaactivateenv_namecondadeactivateenv_name#退出环境condadeactivateenv_namecondacreate-nenv_namepython=3.x#创建p......
  • 你好,复变函数2.0
      第一行:0或 1 第二行:(空格)+函数(后缀)#pragmawarning(disable:4996)#include<easyx.h>#include<stdio.h>#include<math.h>#definePI3.141592653589793#defineE2.718281828459045#defineK(1.0/256.0)#defineK_1256.0structC{ doublei......
  • 升级指南:探索CMMI2.0与3.0之间的企业变革!
    CMMI2.0和CMMI3.0对企业的要求在某些方面有所变化,主要体现在以下几个方面:CMMI2.0对企业的要求1.人员要求:硬性要求:确保企业有25名以上的技术人员和10名以上的支持人员。设立专门的人员对接CMMI评估,负责体系创立、监督执行、进程剖析和改进。2.项目要求:展示公司至少4个以上......
  • 微信对话生成器2.0版本
    微信对话生成器2.0版,这是一款革命性的通讯辅助工具,在数字通信领域带来了新的创新浪潮。这一升级版的生成器不仅囊括了从基本的文字编辑、格式调整到语音转换的多种功能,更重要的是,它提供了模拟真实对话的能力,使得用户可以更有效地规划和预演即将展开的聊天。此工具的核心在......
  • 免费福利:《经典图书推荐2.0》来
    往期文章推荐经典图书雷达和电子对抗经典书推荐1-信息时代的电子战雷达和电子对抗经典书推荐2-机载雷达导论雷达和电子对抗经典书推荐3-应用电子对抗雷达和电子对抗经典书推荐4-雷达手册雷达和电子对抗经典书推荐5-雷达信号处理基础雷达和电子对抗经典书推荐6-......
  • Ubuntu 22.04 安装MariaDB 提供本地服务
    打开终端。更新包列表:sudoaptupdate安装MariaDB服务器:sudoaptinstallmariadb-server安装完成后,运行安全安装脚本来设置密码和调整安全选项:sudomysql_secure_installationroot@seafile-server:/opt#mysql_secure_installationNOTE:RUNNING......
  • Matlab r2023a v23.2.0 解锁版安装步骤 (工程计算商业数学软件)
    前言Matlab(矩阵实验室)是全球领先的数学计算软件开发商美国MathWorks公司研发的一款面向科学与工程计算的高级语言的商业数学软件,集算法开发、数据分析、可视化和数值计算于一体的编程环境,其核心是仿真交互式矩阵计算,广泛应用于科学计算、数据分析、算法开发和绘图设计等......
  • VirtualBox Ubuntu 22.04 Server联网、与主机互联
    使用VirtualBox7.0安装了两个Ubuntu22.04Server虚拟机,想要实现:主机与虚拟机互联虚拟机之间互联,且互联的IP应为静态虚拟机可以联网解决方法每个虚拟机配置两个虚拟网卡:一个为桥接网络模式,用于联网以及与主机互联一个为仅主机模式,用于配置静态IP并实现虚拟机之间互联......
  • hadoop一些相关知识
    大数据概念什么是大数据?大数据是指高速(velocity)涌现的大量(volume)多样化(variety)具有一定价值(value)并且真实(veracity)的数据,其特性可简单概括为5V。原理流程数据采集大数据首先需要将来自不同来源和应用的数据汇集在一起。需要导入和处理数据、执行格式化操作,以符合业......
  • OAuth2.0的简单认识
    内容:结合实际平台应用,以开发者视角简单描述OAuth2.0OAuth2.0其实是一种授权机制,而且在日常的互联网环境中是非常常见的,比如一些网站或者应用,在我们选择登录时,常常会有第三方登录选项,其实这就是OAuth2.0的一种实现。官方协议流程这里直接引用官网文档流程授权码模式其实OAu......