《Hadoop MapReduce实战手册》一1.8 在分布式集群环境中设置Hadoop

简介:

本节书摘来异步社区《Hadoop MapReduce实战手册》一书中的第1章,第1.8节,作者: 【美】Srinath Perera , Thilina Gunarathne 译者: 杨卓荦 责编: 杨海玲,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.8 在分布式集群环境中设置Hadoop

Hadoop MapReduce实战手册
Hadoop的部署包括一套HDFS、一个JobTracker和多个TaskTracker。在1.5节中,我们讨论了HDFS的部署。为了设置Hadoop,我们需要配置JobTracker和TaskTracker,然后在HADOOP_
HOME/conf/slaves文件中指定TaskTracker列表。当我们启动JobTracker时,它会启动相应的TaskTracker节点列表。图1-5描述了一套完整的Hadoop部署。


5

准备工作
无论使用的是单台机器还是多台机器,本节都适用。如果你用的是多台机器,则应该选择一台机器作为主节点,用于运行HDFS NameNode和JobTracker进程。如果你使用的是单台机器,则可以用它既作主节点,又作从节点。

  1. 在所有用于安装Hadoop集群的机器上安装Java。
  2. 如果你使用的是Windows机器,则需要先在每一台机器上都安装Cygwin和SSH服务。链接http://pigtail.net/LRP/printsrv/cygwin-sshd.html提供了详细的说明。

操作步骤
让我们通过设置JobTracker和TaskTracker来设置Hadoop。

  1. 在每一台机器上,创建一个目录,用于存放Hadoop数据。我们把这个目录称作HADOOP_
    DATA_DIR。然后创建三个子目录,HADOOP_DATA_DIR/data、HADOOP_DATA_DIR/local和

HADOOP_DATA_DIR/name。

  1. 在所有机器上设置SSH密钥,这样我们就可以从主节点登录到所有的节点。1.5节详细介绍了SSH设置。
  2. 使用>tar zxvf hadoop-1.x.x.tar.gz命令把Hadoop发行包解压缩到所有机器的相同位置。你可以使用任何Hadoop的1.0分支发行包。
  3. 在所有机器上,编辑HADOOP_HOME/conf/hadoop-env.sh,删除文件中JAVA_HOME行的注释,并将其指向你的本地Java安装目录。例如,如果Java安装在/opt/jdk1.6下,那么就要将JAVA_HOME行改为export JAVA_HOME=/opt/jdk1.6。
  4. 将主节点(运行JobTracker和NameNode的机器)的IP地址作为一行放置在HADOOP_HOME/conf/
    master中。如果你正在进行单节点部署,则保留当前值,填写为localhost。
209.126.198.72
  1. 然后将所有从节点的IP地址写入HADOOP_HOME/conf/slaves文件,每行一个独立的IP地址。
209.126.198.72  
209.126.198.71
  1. 在每个节点的HADOOP_HOME/conf目录里面,将以下内容添加到core-site.xml、hdfs-
    site.xml和mapred-site.xml中。在添加这些配置之前,要先将MASTER_NODE字符串替换为主节点的IP地址,HADOOP_DATA_DIR替换为第一步创建的目录。

将NameNode的URL添加到HADOOP_HOME/conf/core-site.xml中。

<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://MASTER_NODE:9000/</value>
</property>
</configuration>

在HADOOP_HOME/conf/hdfs-site.xml内添加元数据(名称空间)和本地数据存储的位置1:

<configuration>
<property>
<name>dfs.name.dir</name>
<value>HADOOP_DATA_DIR/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>HADOOP_DATA_DIR/data</value>
</property>
</configuration>

MapReduce本地目录是Hadoop用来存储所用临时文件的位置。在HADOOP_HOME/conf/mapred-site.xml中添加JobTracker的位置。Hadoop将用这个地址来管理作业。最后一个属性设置每个节点最大的map任务数,该值通常与(CPU)核数相同。

<configuration>
<property>
<name>mapred.job.tracker</name>
<value>MASTER_NODE:9001</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>HADOOP_DATA_DIR/local</value>
</property>
<property>
<name>mapred.tasktracker.map.tasks.maximum</name>
<value>8</value>
</property>
</configuration>
  1. 要格式化新的HDFS文件系统,需要在Hadoop的NameNode(主节点)上运行以下命令。如果在前一节中已经完成了HDFS安装,可以跳过这一步。
>bin/hadoopnamenode –format
...
/Users/srinath/playground/hadoop-book/hadoop-temp/dfs/name has
been successfully formatted.
12/04/09 08:44:51 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at Srinath-s-MacBook-Pro.
local/172.16.91.1
************************************************************/
  1. 在主节点上,将工作目录跳转到HADOOP_HOME,并运行以下命令:
>bin/start-dfs.sh

startingnamenode, logging to /root/hadoop-setup-srinath/
hadoop-1.0.0/libexec/../logs/hadoop-root-namenode-node7.beta.out

209.126.198.72: starting datanode, logging to /root/hadoop-setupsrinath/
hadoop-1.0.0/libexec/../logs/hadoop-root-datanode-node7.beta.out

209.126.198.71: starting datanode, logging to /root/hadoop-setupsrinath/
hadoop-1.0.0/libexec/../logs/hadoop-root-datanode-node6.beta.out

209.126.198.72: starting secondarynamenode, logging to /root/hadoop-
setup-srinath/hadoop-1.0.0/libexec/../logs/hadoop-root-secondarynamenode-node7.beta.out

>bin/start-mapred.sh

startingjobtracker, logging to /root/hadoop-setup-srinath/hadoop-1.0.0/
libexec/../logs/hadoop-root-jobtracker-node7.beta.out

209.126.198.72: starting tasktracker, logging to /root/hadoop-setup-
srinath/hadoop-1.0.0/libexec/../logs/hadoop-roottasktracker-node7.beta.out

209.126.198.71: starting tasktracker, logging to /root/hadoop-setup-srinath/
hadoop-1.0.0/libexec/../logs/hadoop-roottasktracker-node6.beta.out
  1. 在主节点和从节点上,通过ps | grep java命令(如果你使用的是Linux)或通过任务管理器(如果你使用的是Windows)验证部署后的进程列表是否已经正常启动。主节点会列出四个进程—NameNode、DataNode、JobTracker和TaskTracker,从节点有DataNode和TaskTracker。
  2. 浏览NameNode和JobTracker的Web监控页面。
NameNode:http://MASTER_NODE:50070/。
JobTracker:http://MASTER_NODE:50030/。
  1. 你可以在${HADOOP_HOME}/logs下找到日志文件。
  2. 通过使用HDFS命令行列出文件的方式,确认HDFS安装正确。
bin/hadoopdfs -ls /

Found 2 items
drwxr-xr-x - srinathsupergroup 0 2012-04-09 08:47 /Users
drwxr-xr-x - srinathsupergroup 0 2012-04-09 08:47 /tmp

工作原理
正如本章简介中所描述的,Hadoop的安装包括HDFS节点、JobTracker节点和工作节点。当我们启动NameNode时,它通过HADOOP_HOME/slaves文件查找DataNode配置,并在启动时通过SSH在远程服务器上启动DataNode。同样,当我们启动JobTracker时,它通过HADOOP_HOME/slaves文件找到TaskTracker配置,进而启动TaskTracker。

更多参考在下一节中,我们将讨论如何使用分布式环境执行前面提及的WordCount程序。之后的几节将讨论如何使用MapReduce的监控UI监控分布式Hadoop的安装。

相关文章
|
3天前
|
存储 分布式计算 Hadoop
基于Java的Hadoop文件处理系统:高效分布式数据解析与存储
本文介绍了如何借鉴Hadoop的设计思想,使用Java实现其核心功能MapReduce,解决海量数据处理问题。通过类比图书馆管理系统,详细解释了Hadoop的两大组件:HDFS(分布式文件系统)和MapReduce(分布式计算模型)。具体实现了单词统计任务,并扩展支持CSV和JSON格式的数据解析。为了提升性能,引入了Combiner减少中间数据传输,以及自定义Partitioner解决数据倾斜问题。最后总结了Hadoop在大数据处理中的重要性,鼓励Java开发者学习Hadoop以拓展技术边界。
23 7
|
24天前
|
存储 SpringCloudAlibaba Java
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论。
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
|
2月前
|
存储 分布式计算 负载均衡
分布式计算模型和集群计算模型的区别
【10月更文挑战第18天】分布式计算模型和集群计算模型各有特点和优势,在实际应用中需要根据具体的需求和条件选择合适的计算架构模式,以达到最佳的计算效果和性能。
95 2
|
3月前
|
分布式计算 NoSQL Java
Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
69 2
|
3月前
|
分布式计算 Hadoop
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
69 1
|
2月前
|
存储 监控 大数据
构建高可用性ClickHouse集群:从单节点到分布式
【10月更文挑战第26天】随着业务的不断增长,单一的数据存储解决方案可能无法满足日益增加的数据处理需求。在大数据时代,数据库的性能、可扩展性和稳定性成为企业关注的重点。ClickHouse 是一个用于联机分析处理(OLAP)的列式数据库管理系统(DBMS),以其卓越的查询性能和高吞吐量而闻名。本文将从我的个人角度出发,分享如何将单节点 ClickHouse 扩展为高可用性的分布式集群,以提升系统的稳定性和可靠性。
226 0
|
3月前
|
存储 SQL 消息中间件
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
64 0
|
3月前
|
NoSQL Java Redis
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
Redis分布式锁在高并发场景下是重要的技术手段,但其实现过程中常遇到五大深坑:**原子性问题**、**连接耗尽问题**、**锁过期问题**、**锁失效问题**以及**锁分段问题**。这些问题不仅影响系统的稳定性和性能,还可能导致数据不一致。尼恩在实际项目中总结了这些坑,并提供了详细的解决方案,包括使用Lua脚本保证原子性、设置合理的锁过期时间和使用看门狗机制、以及通过锁分段提升性能。这些经验和技巧对面试和实际开发都有很大帮助,值得深入学习和实践。
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
|
1月前
|
存储 NoSQL Java
使用lock4j-redis-template-spring-boot-starter实现redis分布式锁
通过使用 `lock4j-redis-template-spring-boot-starter`,我们可以轻松实现 Redis 分布式锁,从而解决分布式系统中多个实例并发访问共享资源的问题。合理配置和使用分布式锁,可以有效提高系统的稳定性和数据的一致性。希望本文对你在实际项目中使用 Redis 分布式锁有所帮助。
157 5
|
2月前
|
NoSQL Java 数据处理
基于Redis海量数据场景分布式ID架构实践
【11月更文挑战第30天】在现代分布式系统中,生成全局唯一的ID是一个常见且重要的需求。在微服务架构中,各个服务可能需要生成唯一标识符,如用户ID、订单ID等。传统的自增ID已经无法满足在集群环境下保持唯一性的要求,而分布式ID解决方案能够确保即使在多个实例间也能生成全局唯一的标识符。本文将深入探讨如何利用Redis实现分布式ID生成,并通过Java语言展示多个示例,同时分析每个实践方案的优缺点。
86 8
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等