作为典型的分布式系统,Hadoop中各个实体间存在着大量的交互,远程过程调用让用户可以像调用本地方法一样调用另外一个应用程序提供的服务,而不必设计和开发相关的信息发送、处理和接收等具体代码,是一种重要的分布式计算技术,它提高了程序的互操作性,在Hadoop的实现中得到广泛的应用。
Hadoop没有使用Java RMI,而是实现了一套自己独有的节点间通信机制,理由是有效的IPC(Inter-Process Communication,进程间通信)对于Hadoop来说是至关重要的,Hadoop需要精确控制进程间通信中比如连接、超时、缓存等通信细节。
如下是Hadoop 框架中实现了客户端调用JobTracker服务器端方法的一个具体应用,功能是返回分配给新作业的ID串。接下来从客户端调用、服务器端接口及功能实现和服务器端的监听来展现这一功能。
1 客户端调用类JobClient
publicclass JobClient extends Configured implements MRConstants, Tool {
private JobSubmissionProtocol jobSubmitClient;
// 客户端通过代理对象直接进行方法调用。
public RunningJob submitJobInternal(final JobConf job) {
... ...
JobID jobId = jobSubmitClient.getNewJobId();
... ...
}
// 如下是代理对象的构造方法,首先判断当前hadoop环境是否是本地的,如果不是本地的则构造一个要请求服务器的网络地址(IP和端口),网络地址的信息来自于配置文件中属性mapred.job.tracker的配置,如果配置文件没有该项配置,则取默认值local。
publicvoid init(JobConf conf) throws IOException {
String tracker = conf.get("mapred.job.tracker", "local");
if ("local".equals(tracker)) {
conf.setNumMapTasks(1);
this.jobSubmitClient = new LocalJobRunner(conf);
} else {
this.jobSubmitClient = createRPCProxy(JobTracker.getAddress(conf), conf);
}
}
在IPC中,使用RPC.getProxy()方法获取到一个JobSubmissionProtocol代理对象。
privatestatic JobSubmissionProtocol createRPCProxy(InetSocketAddress addr,Configuration conf) throws IOException {
return (JobSubmissionProtocol) RPC.getProxy(JobSubmissionProtocol.class,
JobSubmissionProtocol.versionID, addr,
UserGroupInformation.getCurrentUser(), conf,
NetUtils.getSocketFactory(conf, JobSubmissionProtocol.class));
}
2 接口JobSubmissionProtocol
如下是服务器端服务接口定义:
interface JobSubmissionProtocol extends VersionedProtocol {
publicstaticfinallongversionID = 28L;
/**
* Allocate a name for the job.
* @return a unique job name for submitting jobs.
* @throws IOException
*/
public JobID getNewJobId() throws IOException;
}
3 实现类JobTracker
如下是服务器端服务实现类定义:
publicclass JobTracker implements MRConstants, InterTrackerProtocol,
JobSubmissionProtocol, TaskTrackerManager, RefreshUserMappingsProtocol,
RefreshAuthorizationPolicyProtocol, AdminOperationsProtocol,
JobTrackerMXBean {
/**
* Allocates a new JobId string.
*/
publicsynchronized JobID getNewJobId() throws IOException {
returnnew JobID(getTrackerIdentifier(), nextJobId++);
}
}
4 服务器监听类
在服务器端先构造一个要提供服务的网络地址addr,传递到RPC.getServer()方法中。服务器端使用RPC.getServer()方法创建服务器端对象interTrackerServer。
Server端的Handler实例(线程)的个数为由配置文件的属性mapred.job.tracker.handler.count指定。
publicclass JobTracker implements MRConstants, InterTrackerProtocol,
JobSubmissionProtocol, TaskTrackerManager, RefreshUserMappingsProtocol,
RefreshAuthorizationPolicyProtocol, AdminOperationsProtocol,
JobTrackerMXBean {
JobTracker(final JobConf conf, String identifier, Clock clock, QueueManagerqm) {
... ...
InetSocketAddress addr = getAddress(conf);
... ...
inthandlerCount = conf.getInt("mapred.job.tracker.handler.count", 10);
this.interTrackerServer =
RPC.getServer(this, addr.getHostName(), addr.getPort(), handlerCount,
false, conf, secretManager);
... ...
}
publicstatic InetSocketAddress getAddress(Configuration conf) {
String jobTrackerStr =
conf.get("mapred.job.tracker", "localhost:8012");
return NetUtils.createSocketAddr(jobTrackerStr);
}
}
相关推荐
#一文读#一文11读懂大数据-Hadoop-大数据技术和相关应用.docx大数据_Hadoop_大数据技术和相关应用.docx#一文读懂大数据_Hadoop_大数据技术和相关应用.docx
04_Hadoop_概论_大数据的应用场景.mp4 06_Hadoop_概论_未来工作内容.mp4 07_Hadoop_入门_课程介绍.mp4 11_Hadoop_入门_Hadoop优势.mp4 13_Hadoop_入门_HDFS概述.mp4 14_Hadoop_入门_YARN概述.mp4 16_Hadoop_入门_...
大数据之Hadoop学习教程+笔记合计_超详细完整.zip
本系统利用大数据技术,合理的为用户做出推荐,推荐的结果可靠程度很高,这就是我的优势所在,因为它和一般的推荐系统的推荐算法不太一样,我的推荐算法是利用Hadoop技术写的,我们可以利用Hadoop集群的高吞吐量,一...
该文档简要介绍了大数据与Hadoop的概念及相关大数据框架,对于在大数据的初学者来说有一定的帮助,可以指导如何学习,以及学习各个框架的步骤
(2)修改 module、software 文件夹的所有者 (1)查询是否安装 java 软件: (2)如果安装的版本低于 1.7,卸载该 jdk: (1)先获
根据给定文件的内容部分,我们可以提炼出以下几个知识点: 1. 大数据业务处理基本流程与关键技术 ...在实际的Hadoop学习和应用中,这些知识点是非常重要的基础,有助于理解和操作Hadoop集群以及处理大数据问题。
HBase与HDFS紧密集成,能够处理PB级别的数据,是大数据应用中的实时数据访问层。 Sqoop是一款用于在Hadoop和传统数据库之间导入导出数据的工具。它简化了批量数据迁移过程,允许用户在关系型数据库和Hadoop之间进行...
* 开源框架Hadoop * NoSQL 数据库(如Cassandra 和 Accumulo) * 大规模并行分析数据库(如 EMC 的 Greenplum,惠普的Vertica 和 TeradataASTERData) 这些新方法采取一种完全不同于传统工具和技术的方式进行数据...
1.大数据框架hadoop; 2.根据表名,获取全部数据,支持翻页; 3.获取数据总条数; 4.根据表名、上次查询最后一条记录的rowkey,获取下一页数据; 5.数据支持jsonarray/list等;
在大数据的世界里,Hadoop是不可或缺的一个核心组件,它为海量数据处理提供了高效、可靠的解决方案。本主题将深入探讨Hadoop在数据分析中的应用及其生态系统的关键技术。 首先,我们需要理解“大数据”的概念。...
大数据之hadoop,spart全套全技术栈视频课程,包含spark,hadoop,storm,kafka,mllib等组件的安装,编程等,依次从基础,进阶直到实际实践。
大数据应用场景:大数据技术的应用场景非常广泛,包括海量数据存储、分布式文件系统、面向列的开源数据库、非关系数据库、文档存储等。 分布式文件系统:HDFS(Hadoop Distributed File System)是Hadoop项目的核心...
技术领域:大数据领域Hadoop技能学习 技术关键词:大数据、Hadoop 内容:大数据小白晋升之路学习必备 用途:学习
首先,大数据技术与应用专业的核心课程是培养学生在大数据应用系统开发方面的核心技能,包括数据采集、分析、处理和可视化等方面的能力。为了实现这一点,课程教学目标包括了解大数据行业发展历史和架构、掌握分布式...
供应商在大数据领域扮演着关键角色,他们提供硬件、软件和服务,帮助企业构建大数据基础设施,开发大数据应用。随着市场的快速发展,供应商需要不断创新,提供更高效、易用和安全的大数据解决方案。 总结起来,...
大数据整理hadoop/hive
Hadoop是应对大数据挑战的关键技术之一,由Apache基金会开发。它是一个开源的分布式系统基础架构,允许开发者在不了解分布式计算底层细节的情况下编写分布式程序。Hadoop的核心组件包括分布式文件系统(HDFS)和...
【大数据应用场景】 - **物流仓储**(图2-6):通过分析订单、库存和运输数据优化供应链管理,提高效率。 - **零售**(图2-7):利用顾客购买行为、浏览历史等数据进行个性化推荐,提升销售业绩。 - **旅游**(图2-8...