ad

打开《OpenStack 云平台-部署与高可用实战》_7.2.3 MapReduce与 HBase

网友投稿 101 2023-11-13

【摘要】 本书摘自《OpenStack 云平台-部署与高可用实战》一书中第7.2.3节,肖睿 雷宇飞主编。

7.2.3 MapReduce与 HBase

1.MapReduce 和 HBase 概述

打开《OpenStack 云平台-部署与高可用实战》_7.2.3 MapReduce与 HBase

HBase 可以使用本地文件系统和 HDFS 文件系统作为数据存储介质,当HBase 在伪 分布式和完全分布式模式下运行时,使用的是HDFS 文件系统。使用 HDFS 文件系统时, HBase 表中的数据最终存储在 HDFS 文件中,用户不需要关心 HBase 中的表是如何在 HDFS 上存储的,只需通过HBase 从这些文件中读取数据即可。

一个 MapReduce 应用要想在 MapReduce 框架中运行,首先需要定义为一个作业。 其中包括 MapReduce 的输入和输出两个基本要素,同时还包括数据输入/输出的文件 和处理这些文件所采用的输入/输出格式。HBase 与 MapReduce 可以协同工作,通过 在 HBase 中读取数据作为 MapReduce 的输入,而在 MapReduce 输出数据时,通过 HBase 完成存储。这样做带来的好处是,既充分发挥了MapReduce 的分布式计算的 优势,也利用了 HDFS 海量存储的特点,尤其是对海量数据进行实时访问时。 MapReduce 和 HBase 集成之后,MapReduce 、HBase 、HDFS 之间的关系结构如图7.17 所示。

除此之外,集成 MapReduce 与 HBase 还具备以下优势。

● 可以对 HBase 中的数据进行非实时性的统计分析;

● 可以对 Hbase 中的表数据进行分布式计算;

● 可以在多个MapReduce 间使用 HBase 作为中间存储介质。

2.MapReduce 与 HBase 集成

在 MapReduce 与HBase 集成环境中,输入/输出的内容从文件变为表 (HTable), 对 表的输入/输出通过 TablelnputFormat 和 TableOutputFormat 实现,其所在 jar 文件为 “hbase-server-1.0.2.jar”。

MapReduce 与HBase 集成环境在使用之前,还需做一些额外的调整工作。默认情况 下 ,MapReduce 作业发布到群集后,不能直接访问HBase 的配置文件和相关类,需要对 群集中的各节点的 Hadoop 环境做如下调整。

( 1 ) 将 hbase-site.xml 文件复制到SHADOOP_HOME/etc/hadoop 下,使 MapReduce 作业在运行时可以连接到 ZooKeeper 群集。

(2)编辑$HADOOP_HOME/etc/hadoop/hadoop-env.sh 文件,追加如下内容。

export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:~/hbase-1.0.2/lib/*

将HBase 安装目录lib 下的所有jar文件添加到环境变量$HADOOP_CLASSPATH中, 使得 MapReduce 作业可以访问所依赖的 HBase 相关类,从而不用每次将 HBase 相关类 打包到MapReduce 应用的jar 文件中。

(3)将上述操作的两个文件复制到 Hadoop 群集中其他节点上。

(4)使用如下命令可测试环境是否已正确配置。

hadoop jar ~/hbase-1.0.2/ib/hbase-server-1.0.2.jar rowcounter music

该命令将运行 “hbase-server-1.0.2.jar” 中的 MapReduce 应用 “rowcounter”, 参数为 表名 “music” 。其作用是通过 MapReduce 框架统计 HBase 数据库表 music 中的行数。如 输出图7.18所示结果,表示集成环境已正确配置。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:打开《OpenStack 云平台-部署与高可用实战》_2.4 镜像模块 Glance
下一篇:学习《Python网络爬虫 从入门到精通》_掌握爬虫的精髓_1.4.2 HTML
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×