跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
Apache Hadoop架构组件
”︁(章节)
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
== 核心组件 == Hadoop的核心架构主要由以下四个组件构成: 1. '''Hadoop Distributed File System (HDFS)''':分布式文件系统,负责数据的存储。 2. '''YARN (Yet Another Resource Negotiator)''':资源管理和作业调度框架。 3. '''MapReduce''':分布式计算模型,用于处理大规模数据集。 4. '''Hadoop Common''':提供Hadoop各模块所需的公共工具和库。 === HDFS (Hadoop Distributed File System) === HDFS是Hadoop的存储层,设计用于存储超大规模数据(如TB或PB级别)。其核心特点包括: * '''分布式存储''':数据被分割成块(默认128MB或256MB)并存储在集群的多个节点上。 * '''高容错性''':通过数据副本(默认3份)确保数据可靠性。 * '''高吞吐量''':优化了顺序读写,适合批处理任务。 HDFS的主要角色: * '''NameNode''':管理文件系统的元数据(如文件目录结构、块位置)。 * '''DataNode''':存储实际数据块并执行读写操作。 以下是一个HDFS命令行操作的示例: <syntaxhighlight lang="bash"> # 上传文件到HDFS hadoop fs -put localfile.txt /user/hadoop/input/ # 列出HDFS目录内容 hadoop fs -ls /user/hadoop/input/ </syntaxhighlight> === YARN (Yet Another Resource Negotiator) === YARN是Hadoop的资源管理框架,负责集群资源的分配和任务调度。其核心组件包括: * '''ResourceManager (RM)''':全局资源管理器,负责分配集群资源。 * '''NodeManager (NM)''':每个节点上的代理,负责管理单个节点的资源。 * '''ApplicationMaster (AM)''':每个应用程序的协调者,负责与RM协商资源并监控任务。 YARN的工作流程如下: 1. 客户端提交应用程序到RM。 2. RM分配一个容器(Container)以启动AM。 3. AM向RM申请资源,并在NM上启动任务。 === MapReduce === MapReduce是Hadoop的计算模型,用于并行处理大规模数据集。其工作分为两个阶段: 1. '''Map阶段''':将输入数据拆分为键值对并处理。 2. '''Reduce阶段''':聚合Map阶段的输出。 以下是一个简单的WordCount示例代码: <syntaxhighlight lang="java"> public class WordCount { public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable> { private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map(Object key, Text value, Context context) throws IOException, InterruptedException { StringTokenizer itr = new StringTokenizer(value.toString()); while (itr.hasMoreTokens()) { word.set(itr.nextToken()); context.write(word, one); } } } public static class IntSumReducer extends Reducer<Text, IntWritable, Text, IntWritable> { private IntWritable result = new IntWritable(); public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException { int sum = 0; for (IntWritable val : values) { sum += val.get(); } result.set(sum); context.write(key, result); } } public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); Job job = Job.getInstance(conf, "word count"); job.setJarByClass(WordCount.class); job.setMapperClass(TokenizerMapper.class); job.setCombinerClass(IntSumReducer.class); job.setReducerClass(IntSumReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); FileInputFormat.addInputPath(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); System.exit(job.waitForCompletion(true) ? 0 : 1); } } </syntaxhighlight> === Hadoop Common === Hadoop Common是Hadoop的基础库,提供以下功能: * 文件系统抽象(如HDFS、本地文件系统)。 * 配置管理(通过<code>core-site.xml</code>和<code>hdfs-site.xml</code>)。 * 安全认证(如Kerberos集成)。
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)