Hadoop 2.0 大家族(二)

目录

    • 三、Hbase
      • (一)Hbase简介
      • (二)Hbase入门
    • 四、Pig
      • (一)Pig简介
      • (二)Pig入门


三、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程序,这种“懒”策略有利于提高集群利用率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/31795.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

天地图(二)引入地图

1、在public下的index.html中引入天地图 <script src"http://api.tianditu.gov.cn/api?v4.0&tk你的密钥"></script> 2、在vue文件中写入 <template><div:id"mapDiv currentIndex"class"map"style"position: a…

生成式AI和LLM的一些基本概念和名词解释

1. Machine Learning 机器学习是人工智能&#xff08;AI&#xff09;的一个分支&#xff0c;旨在通过算法和统计模型&#xff0c;使计算机系统能够从数据中学习并自动改进。机器学习算法使用数据来构建模型&#xff0c;该模型可用于预测或决策。机器学习应用于各种领域&#x…

C语言基础关键字的含义和使用方法

​关键字在C语言中扮演着非常重要的角色&#xff0c;它们定义了语言的基本构造和语法规则&#xff0c;通过使用关键字&#xff0c;开发者可以创建变量、定义数据类型、控制程序流程&#xff08;如循环和条件判断&#xff09;、声明函数等。由于这些字是保留的&#xff0c;所以编…

[SAP ABAP] 变量与常量

1.变量 定义变量的基本方式 DATA <name> TYPE <type> [VALUE <val>]. <name>&#xff1a;指定变量的名称 <type>&#xff1a;指定变量的数据类型 <val>&#xff1a;指定<name>的初始值 示例1 定义变量lv_data1和lv_data3 输出结果…

threejs 光影投射-与场景进行交互(六)

效果 场景中有三个立方体,三种颜色.点击变成红色,再点恢复自身原有颜色 代码 import ./style.css import * as THREE from three import { OrbitControls } from three/examples/jsm/controls/OrbitControls.js import { log } from three/examples/jsm/nodes/Nodes.js//…

运算放大器(运放)积分器电路

积分器电路 运算放大器(运放)积分器电路是在图2运放反相放大器的电路上增加一个积分电容构成&#xff0c;该积分电容并联在运算放大器的反馈电阻上&#xff0c;见图1。 运算放大器(运放)反相放大器电路 设计目标 输入fMin输入f0dB输入fMax输出VoMin输出VoMax电源Vcc电源Vee1…

【源码+硬件说明+接线】Arduino-ESP32 http访问播放网络mp3音乐并获取获取远程服务器文件并存SD卡

前言 最近跟浩楠哥接了一个外包,不得不说人总得逼自己一把就可以学到很多东西,这次收获不小,就把一部分困扰我一段时间的部分放出来给大家看看,避免大家踩我相同的坑 1. 硬件准备 1.1 Esp32Wroom 主控使用esp32Wroom,我具备蓝牙,wifi,低功耗蓝牙功能,配合Arduino库作…

Go-知识并发控制mutex

Go-知识并发控制mutex 1. 介绍2. 数据结构2.1 Mutex 结构体2.2 Mutex 方法 3. 加锁解锁过程3.1 简单加锁3.2 加锁被阻塞3.3 简单解锁3.4 解锁并唤醒协程 4. 自旋过程4.1 什么是自旋4.2 自旋条件4.3 自旋的优势4.4 自旋的问题 5. Mutex 模式5.1 Normal 模式5.2 Starving 模式(饥…

市场价格到底是因为什么而变动?

在外汇及广泛的金融市场中&#xff0c;影响金融工具价格起伏的因素纷繁复杂。然而&#xff0c;万变不离其宗&#xff0c;无论是哪个市场&#xff0c;价格的最终决定力量始终是供需之间的平衡法则。 对于外汇、大宗商品等金融市场而言&#xff0c;表面上似乎受宏观经济数据、央…

FastBoot刷机获取root权限(Magisk)

1.首先要下载ADB、Fastboot等工具。 1.ADB、Fastboot工具 https://developer.android.com/studio/releases/platform-tools 2.安装FastBoot的USB驱动 https://developer.android.com/studio/run/oem-usb 2.下载对应的镜像 https://developers.google.com/android/images?…

Ubuntu系统配置C/C++编译环境

在Ubuntu系统中安装和学习C语言非常的方便&#xff0c;与Windows复杂的环境配置不同&#xff0c;Ubuntu提供了多种C/C开发工具&#xff0c;如GCC&#xff08;GNU Compiler Collection&#xff09;、GDB&#xff08;GNU Debugger&#xff09;和Valgrind等。这些工具不仅功能强大…

24.1 部署-交叉编译、压缩二进制文件、Docker容器

1. 交叉编译 Go语言的优越性之一是可在众多环境下运行&#xff0c;其中包括&#xff1a; 操作系统 windows、darwin、plan9、solaris、linux、netbsd/openbsd/freebsd、android体系架构 386/amd64、arm/arm64、ppc64/ppc64le、mips/mipsle/mips64/mips64le 使用go env命令可…

穿越时空的金星奥秘:揭秘古代天文学的惊人成就

在浩瀚的历史长河中&#xff0c;人类对宇宙的探索从未停止。而在中国古代&#xff0c;一项惊人的天文发现&#xff0c;至今仍让世界为之惊叹。那就是西汉时期的《五星占》&#xff0c;一部揭示金星会合周期的珍贵文献&#xff0c;其精确度之高&#xff0c;足以令现代天文学家瞠…

【AI基础】大模型资源整理

开局一张图&#xff0c;全靠硬凑&#xff1a; 硬拼一个雷达图&#xff1a; AI大模型&#xff0c;这是核心智能助手&#xff0c;基于大模型搭建的拿来就用的成熟应用平台应用分享&#xff0c;基于大模型搭建的拿来就用的小应用AI开发&#xff0c;基于大模型开发小应用 学习资源…

容器之分栏窗体构件演示

代码; #include <gtk-2.0/gtk/gtk.h> #include <glib-2.0/glib.h> #include <gtk-2.0/gdk/gdkkeysyms.h> #include <stdio.h>int main(int argc, char *argv[]) {gtk_init(&argc, &argv);GtkWidget *window;window gtk_window_new(GTK_WINDO…

智慧园区解决方案PPT(53页)

## 1.1 智慧园区背景及需求分析 - 智慧园区的发展历程包括园区规划、经济、产业、企业、管理、理念的转变&#xff0c;强调管理模式创新&#xff0c;关注业务综合化、管理智慧化等发展。 ## 1.2 国家对智慧园区发展的政策 - 涉及多个国家部门&#xff0c;如工信部、住建部、…

抖音开放平台代开发小程序,上传模板代码

大家好&#xff0c;我是小悟 抖音小程序第三方平台开发着力于解决抖音生态体系内的小程序管理问题&#xff0c;一套模板&#xff0c;随处部署。能尽可能地减少服务商的开发成本&#xff0c;服务商只用开发一套小程序代码作为模板就可以快速批量的孵化出大量的商家小程序。 第…

Service方法增加@Asyn注解后导致bean无法找到 NoSuchBeanDefinitionException

Service方法增加Asyn注解后导致bean无法找到 NoSuchBeanDefinitionException 场景处理方法原因 场景 首先确认的是Service添加了Service或Component等注解&#xff0c;另外也增加了ComponentScan确定扫描的包路径是包含对应Service的&#xff0c;但就是无法找到这个bean。 通…

开放式耳机怎么选?五款劲爆机型强势PK!2024推荐版!

身为健身达人&#xff0c;我对耳机的要求可不低。开放式耳机让我在健身时既能享受音乐&#xff0c;又能清晰听到教练的指导。它佩戴舒适&#xff0c;不易掉落&#xff0c;而且音质出色&#xff0c;让我沉浸于运动的节奏中。市面上开放式耳机种类繁多&#xff0c;我为大家挑选了…

Omnivore:全能开源稍后阅读神器,让文字爱好者畅享阅读乐趣!

热门开源项目推荐 项目地址&#x1f517;&#x1f517;&#x1f517;&#x1f517; https://gitcode.com/omnivore-app/omnivore/overview Omnivore&#xff1a;全能开源稍后阅读神器 Omnivore App 介绍 Omnivore是一个完整的开源稍后阅读解决方案&#xff0c;专为喜欢文字…