Heim  >  Artikel  >  Datenbank  >  Hadoop集群搭建

Hadoop集群搭建

WBOY
WBOYOriginal
2016-06-07 16:41:081100Durchsuche

原文 ? http://blog.csdn.net/yang_best/article/details/41280553 接下来的几节描述了如何配置Hadoop集群。 配置文件 对Hadoop的配置通过 conf/ 目录下的两个重要配置文件完成: hadoop-default.xml 只读的默认配置。 hadoop-site.xml 集群特有的配置。 要

接下来的几节描述了如何配置Hadoop集群。

配置文件

对Hadoop的配置通过 conf/ 目录下的两个重要配置文件完成:

  1. hadoop-default.xml – 只读的默认配置。
  2. hadoop-site.xml – 集群特有的配置。

要了解更多关于这些配置文件如何影响Hadoop框架的细节,请看 这里 。

此外,通过设置 conf/hadoop-env.sh 中的变量为集群特有的值,你可以对 bin/ 目录下的Hadoop脚本进行控制。

集群配置

要配置Hadoop集群,你需要设置Hadoop守护进程的 运行环境 和Hadoop守护进程的 运行参数

Hadoop守护进程指 NameNode / DataNode 和 JobTracker / TaskTracker 。

配置Hadoop守护进程的运行环境

管理员可在 conf/hadoop-env.sh 脚本内对Hadoop守护进程的运行环境做特别指定。

至少,你得设定 JAVA_HOME 使之在每一远端节点上都被正确设置。

管理员可以通过配置选项 HADOOP_*_OPTS 来分别配置各个守护进程。 下表是可以配置的选项。

守护进程 配置选项
NameNode HADOOP_NAMENODE_OPTS
DataNode HADOOP_DATANODE_OPTS
SecondaryNamenode HADOOP_SECONDARYNAMENODE_OPTS
JobTracker HADOOP_JOBTRACKER_OPTS
TaskTracker HADOOP_TASKTRACKER_OPTS

例如,配置Namenode时,为了使其能够并行回收垃圾(parallelGC), 要把下面的代码加入到 hadoop-env.sh :

export HADOOP_NAMENODE_OPTS=”-XX:+UseParallelGC ${HADOOP_NAMENODE_OPTS}”

其它可定制的常用参数还包括:

  • HADOOP_LOG_DIR – 守护进程日志文件的存放目录。如果不存在会被自动创建。
  • HADOOP_HEAPSIZE – 最大可用的堆大小,单位为MB。比如, 1000MB 。 这个参数用于设置hadoop守护进程的堆大小。缺省大小是 1000MB 。

配置Hadoop守护进程的运行参数

这部分涉及Hadoop集群的重要参数,这些参数在 conf/hadoop-site.xml 中指定。

参数 取值 备注
fs.default.name NameNode 的URI。 hdfs://主机名/
mapred.job.tracker JobTracker 的主机(或者IP)和端口。 主机:端口
dfs.name.dir NameNode 持久存储名字空间及事务日志的本地文件系统路径。 当这个值是一个逗号分割的目录列表时,nametable数据将会被复制到所有目录中做冗余备份。
dfs.data.dir DataNode 存放块数据的本地文件系统路径,逗号分割的列表。 当这个值是逗号分割的目录列表时,数据将被存储在所有目录下,通常分布在不同设备上。
mapred.system.dir Map/Reduce框架存储系统文件的HDFS路径。比如/hadoop/mapred/system/。 这个路径是默认文件系统(HDFS)下的路径, 须从服务器和客户端上均可访问。
mapred.local.dir 本地文件系统下逗号分割的路径列表,Map/Reduce临时数据存放的地方。 多路径有助于利用磁盘i/o。
mapred.tasktracker.{map|reduce}.tasks.maximum 某一 TaskTracker 上可运行的最大Map/Reduce任务数,这些任务将同时各自运行。 默认为2(2个map和2个reduce),可依据硬件情况更改。
dfs.hosts/dfs.hosts.exclude 许可/拒绝DataNode列表。 如有必要,用这个文件控制许可的datanode列表。
mapred.hosts/mapred.hosts.exclude 许可/拒绝TaskTracker列表。 如有必要,用这个文件控制许可的TaskTracker列表。

通常,上述参数被标记为 final 以确保它们不被用户应用更改。

现实世界的集群配置

这节罗列在大规模集群上运行 sort 基准测试(benchmark)时使用到的一些非缺省配置。

  • 运行sort900的一些非缺省配置值,sort900即在900个节点的集群上对9TB的数据进行排序:
    参数 取值 备注
    dfs.block.size 134217728 针对大文件系统,HDFS的块大小取128MB。
    dfs.namenode.handler.count 40 启动更多的NameNode服务线程去处理来自大量DataNode的RPC请求。
    mapred.reduce.parallel.copies 20 reduce启动更多的并行拷贝器以获取大量map的输出。
    mapred.child.java.opts -Xmx512M 为map/reduce子虚拟机使用更大的堆。
    fs.inmemory.size.mb 200 为reduce阶段合并map输出所需的内存文件系统分配更多的内存。
    io.sort.factor 100 文件排序时更多的流将同时被归并。
    io.sort.mb 200 提高排序时的内存上限。
    io.file.buffer.size 131072 SequenceFile中用到的读/写缓存大小。
  • 运行sort1400和sort2000时需要更新的配置,即在1400个节点上对14TB的数据进行排序和在2000个节点上对20TB的数据进行排序:
    参数 取值 备注
    mapred.job.tracker.handler.count 60 启用更多的JobTracker服务线程去处理来自大量TaskTracker的RPC请求。
    mapred.reduce.parallel.copies 50
    tasktracker.http.threads 50 为TaskTracker的Http服务启用更多的工作线程。reduce通过Http服务获取map的中间输出。
    mapred.child.java.opts -Xmx1024M 使用更大的堆用于maps/reduces的子虚拟机

Slaves

通常,你选择集群中的一台机器作为 NameNode ,另外一台不同的机器作为JobTracker 。余下的机器即作为 DataNode 又作为 TaskTracker ,这些被称之为slaves

在 conf/slaves 文件中列出所有slave的主机名或者IP地址,一行一个。

日志

Hadoop使用 Apache log4j 来记录日志,它由 Apache Commons Logging 框架来实现。编辑 conf/log4j.properties 文件可以改变Hadoop守护进程的日志配置(日志格式等)。

历史日志

作业的历史文件集中存放在 hadoop.job.history.location ,这个也可以是在分布式文件系统下的路径,其默认值为 ${HADOOP_LOG_DIR}/history 。jobtracker的web UI上有历史日志的web UI链接。

历史文件在用户指定的目录 hadoop.job.history.user.location 也会记录一份,这个配置的缺省值为作业的输出目录。这些文件被存放在指定路径下的“_logs/history/”目录中。因此,默认情况下日志文件会在“mapred.output.dir/_logs/history/”下。如果将hadoop.job.history.user.location 指定为值 none ,系统将不再记录此日志。

用户可使用以下命令在指定路径下查看历史日志汇总

$ bin/hadoop job -history output-dir

这条命令会显示作业的细节信息,失败和终止的任务细节。

关于作业的更多细节,比如成功的任务,以及对每个任务的所做的尝试次数等可以用下面的命令查看

$ bin/hadoop job -history all output-dir

一但全部必要的配置完成,将这些文件分发到所有机器的 HADOOP_CONF_DIR 路径下,通常是 ${HADOOP_HOME}/conf 。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn