HDFS集群安装配置

本文详细介绍了HDFS集群的安装配置,包括概述、Web界面、Hadoop集群安装、非安全模式下的配置、NodeManagers状态监控、slaves文件、机架感知以及日志管理。内容覆盖NameNode和DataNodes的职责、Web界面的访问、配置文件详解、环境变量设置、节点状态监控以及日志系统的配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、概述

  HDFS集群主要由NameNodeDataNodes组成,前者负责管理文件系统元数据,后者用于保存真正的数据。
  主要特性:
  1. 可使用商品级硬件(如普通PC)进行分布式存储和分布式计算。高容错、可扩展、易伸缩。
  2. 可根据不同的需求进行不同的配置。
  3. Hadoop使用Java编写,支持各主流平台。
  4. 支持使用类似shell命令与HDFS进行交互。
  5. NameNode和DataNodes集成在了web服务器中,可方便使用web查看集群状态。
  6. 其他特性:文件权限验证、机架感知、安全模式、fsck等等。
  以下笔记由hadoop 2.7.2文档而来。

二、Web界面

  默认的配置中,NameNode可通过http://namenode-name:50070/来访问(其中的namenode-name是你自己配置的namenode主机名)。使用Web界面可以查看集群状态、浏览文件系统、查看DataNodes等。

三、Hadoop集群安装

  略,请参考文档,或自行百度。

四、非安全模式下的Hadoop配置

1. 配置文件主要有两种:
  • 只读的默认配置 ——
    • core-default.xml
    • hdfs-default.xml
    • yarn-default.xml
    • mapred-default.xml
  • 具体指定的配置 ——
    • etc/hadoop/core-site.xml
    • etc/hadoop/hdfs-site.xml
    • etc/hadoop/yarn-site.xml
    • etc/hadoop/mapred-site.xml
2. 控制Hadoop脚本行为:
  • etc/hadoop/hadoop-env.sh
  • etc/hadoop/yarn-env.sh
  • etc/hadoop/mapred-env.sh
3. Hadoop后台进程:
  • Hadoop后台进程一般各自运行在独立的主机上
  • HDFS后台进程
    • NameNode, SecondaryNameNode, DataNode
  • YARN后台进程
    • ResourceManager, NodeManager, WebAppProxy
  • MapReduce后台进程(若有)
    • Job History Server
4. Hadoop后台进程环境配置:
  • Hadoop进程的环境变量在以下3个脚本中设置

    • etc/hadoop/hadoop-env.sh
    • etc/hadoop/yarn-env.sh
    • etc/hadoop/mapred-env.sh
  • 各后台进程的环境变量如下:

DaemonEnvironment Variable
NameNodeHADOOP_NAMENODE_OPTS
DataNodeHADOOP_DATANODE_OPTS
Secondary NameNodeHADOOP_SECONDARYNAMENODE_OPTS
ResourceManagerYARN_RESOURCEMANAGER_OPTS
NodeManagerYARN_NODEMANAGER_OPTS
WebAppProxyYARN_PROXYSERVER_OPTS
MapReduce Job History ServerHADOOP_JOB_HISTORYSERVER_OPTS

比如,对NameNode的设置可以如下:
export HADOOP_NAMENODE_OPTS=”-Xmx30720m -XX:+UseParallelGC -Dhadoop.security.logger=${HADOOP_SECURITY_LOGGER:-INFO,RFAS}”

5. Hadoop后台进程配置:
  • etc/hadoop/core-site.xml
ParameterValueNotes
fs.defaultFSNameNode URIhdfs://主机名:端口/
io.file.buffer.size131072序列化文件的读/写缓存大小

  • etc/hadoop/hdfs-site.xml

    NameNode的配置

ParameterValueNotes
dfs.namenode.name.dir本地文件系统上,NameNode保存命名空间和处理日志的路径如果值指定为用逗号分隔的目录列表,命名表会复制到所有目录下做一个冗余。
dfs.hosts /dfs.hosts.exclude许可/拒绝的DataNodes列表如果有需要的话,可以使用该属性来指定哪些DataNodes可用/不可用。
dfs.blocksize268435456大型文件系统可指定HDFS的块大小为256MB
dfs.namenode.handler.count100指定有多少NameNode server线程来处理来自大量DataNodes的RPCs(远程过程调用)

  DataNode的配置

ParameterValueNotes
dfs.datanode.data.dir一个DataNode将其数据块保存在本地文件系统上的指定路径中,多个路径使用逗号分隔如果路径有多个,那么数据会保存在所有的目录下。一般而言,多个路径位于不同的device下。

  • etc/hadoop/yarn-site.xml
      ResourceManager和NodeManager共有的配置
ParameterValueNotes
yarn.acl.enabletrue/false是否开启ACLs,默认关闭
yarn.admin.aclAdmin ACLACL可设置集群的管理员。 ACLs是用逗号分隔的用户空间和用户组。默认值为* 表示任何人可以访问。空白表示无人可访问。
yarn.log-aggregation-enablefalse设置是否允许日志聚集

  ResourceManager的配置

ParameterValueNotes
yarn.resourcemanager.addressResourceManager 主机名:端口号。用户向这里提交作业。如果设置了主机名:端口号,会覆盖在 yarn.resourcemanager.hostname中设置的主机名
yarn.resourcemanager.scheduler.addressResourceManager host:port ApplicationMasters向这里发出资源申请。如果设置了主机名:端口号, 会覆盖在 yarn.resourcemanager.hostnamez中设置的主机名
yarn.resourcemanager.resource-tracker.addressResourceManager host:port 供NodeManager使用如果设置了主机名:端口号, 会覆盖在 yarn.resourcemanager.hostnamez中设置的主机名
yarn.resourcemanager.admin.addressResourceManager host:port 供管理命令使用如果设置了主机名:端口号, 会覆盖在 yarn.resourcemanager.hostnamez中设置的主机名
yarn.resourcemanager.webapp.addressResourceManager web界面 host:port.如果设置了主机名:端口号, 会覆盖在 yarn.resourcemanager.hostnamez中设置的主机名
yarn.resourcemanager.hostnameResourceManager 主机.单独的主机名可以在所有yarn.resourcemanager*address 中设置。端口号是默认的。
yarn.resourcemanager.scheduler.classResourceManager Scheduler class.CapacityScheduler (推荐), FairScheduler (推荐), or FifoScheduler
yarn.scheduler.minimum-allocation-mb分配给Resource Manager容器最小内存。单位是MB
yarn.scheduler.maximum-allocation-mb分配给 Resource Manager容器的最大内存单位是MB
yarn.resourcemanager.nodes.include-path/yarn.resourcemanager.nodes.exclude-path许可/拒绝的NodeManager列表If necessary, use these files to control the list of allowable NodeManagers.

  NodeManager的配置

ParameterValueNotes
yarn.nodemanager.resource.memory-mbNodeManager可用的屋里内存Defines total available resources on the NodeManager to be made available to running containers
yarn.nodemanager.vmem-pmem-ratio任务使用的虚拟内存可超出物理内存的最大比率The virtual memory usage of each task may exceed its physical memory limit by this ratio. The total amount of virtual memory used by tasks on the NodeManager may exceed its physical memory usage by this ratio.
yarn.nodemanager.local-dirs中间结果写入的本地文件系统路径列表,用逗号隔开Multiple paths help spread disk i/o.
yarn.nodemanager.log-dirs日志写入的本地文件系统路径列表,用逗号隔开Multiple paths help spread disk i/o.
yarn.nodemanager.log.retain-seconds10800NodeManager保存日志文件的默认时长(单位为秒),仅适用于log-aggregation被关闭时。
yarn.nodemanager.remote-app-log-dir/logs应用程序结束后,程序日志移动到HDFS 上的相应目录。需要设置转移许可权限。仅适用于log-aggregation开启时。
yarn.nodemanager.remote-app-log-dir-suffixlogs远程日志目录后缀。日志将被收集到${yarn.nodemanager.remote-app-log-dir}/${user}/${thisParam}。仅适用于log-aggregation开启时
yarn.nodemanager.aux-servicesmapreduce_shuffleMapReduce程序所需的Shuffle 服务

  History Server的配置

ParameterValueNotes
yarn.log-aggregation.retain-seconds-1收集到的日志保存多久。 -1 表示不保存。注意,如果该属性值设置的太小,name node可能会收到垃圾信息。
yarn.log-aggregation.retain-check-interval-seconds-1聚集日志保存时间检查间隔。如果设为0或负值,值被解释成聚集日志保存时间的1/10。注意,如果该属性值设置的太小,name node可能会收到垃圾信息。

  • etc/hadoop/mapred-site.xml
      MapReduce Applications的配置
ParameterValueNotes
mapreduce.framework.nameyarn管理框架设为 Hadoop YARN.
mapreduce.map.memory.mb1536Larger resource limit for maps.
mapreduce.map.java.opts-Xmx1024MLarger heap-size for child jvms of maps.
mapreduce.reduce.memory.mb3072Larger resource limit for reduces.
mapreduce.reduce.java.opts-Xmx2560MLarger heap-size for child jvms of reduces.
mapreduce.task.io.sort.mb512更大的数值有利于数据的高效排序
mapreduce.task.io.sort.factor100排序时,每次将合并更多的流
mapreduce.reduce.shuffle.parallelcopies50map输出数据量较大时,该属性可使reduce在抓取map结果时并行更多的拷贝

  MapReduce JobHistory的配置

ParameterValueNotes
mapreduce.jobhistory.addressMapReduce JobHistory Server host:portDefault port is 10020.
mapreduce.jobhistory.webapp.addressMapReduce JobHistory Server Web UIhost:portDefault port is 19888.
mapreduce.jobhistory.intermediate-done-dir/mr-history/tmpMapReduce作业将history文件写入配置的目录中
mapreduce.jobhistory.done-dir/mr-history/doneMR JobHistory Server管理history文件的目录

五、NodeManagers状态监控

  管理员可以提供一个脚本让NodeManager定期运行,检测节点的状态。如果脚本检测出一个节点处于不健康状态,必须向标准输出打印一行以”ERROR”开头的信息。NodeManager定期运行脚本并检查脚本输出。如果脚本的输出包含字符串”ERROR”,将报告节点为不健康状态,并且ResourceManager会将该节点加入黑名单。以后的任务将不会在该几点上运行。不过,如果在NodeManager之后的检测中发现改节点又恢复健康状态,则该节点又会从黑名单删除。
  节点状态监控脚本的控制参数在etc/hadoop/yarn-site.xml中:

ParameterValueNotes
yarn.nodemanager.health-checker.script.path脚本路径Script to check for node’s health status.
yarn.nodemanager.health-checker.script.opts脚本参数Options for script to check for node’s health status.
yarn.nodemanager.health-checker.script.interval-ms脚本运行间隔Time interval for running health script.
yarn.nodemanager.health-checker.script.timeout-ms脚本超时时间Timeout for health script execution.

  如果仅仅是因为磁盘出问题,监控脚本不应该打印”ERROR”。NodeManager具备定期检测本地磁盘健康状态的能力(特别是检测nodemanager-local-dirs和nodemanager-log-dirs),一旦不健康的目录数量达到属性yarn.nodemanager.disk-health-checker.min-healthy-disks设定的阈值,整个节点就被标记为不健康,并报告给ResourceManager。引导盘要么做raid,要么也纳入脚本监控。

六、slaves文件

  etc/hadoop/slaves文件中列出了所有从节点的主机名或IP地址,每行一个。helper脚本会使用etc/hadoop/slaves文件同时在多台主机上运行命令。这个功能的前提是配置了ssh信任关系(通过ssh免密码登录或其他方式,比如Kerberos认证)。

七、机架感知

  许多Hadoop组件都使用了机架感知,并且利用网络拓扑来获得性能和安全性的平衡。Hadoop守护进程通过调用管理员配置的模块来获取集群上从节点的机架信息。详情请参见 Rack Awareness。
  强烈建议启动HDFS之前,先配置好机架感知。

八、日志

  Hadoop使用 Apache log4j 来记录日志。可通过 etc/hadoop/log4j.properties 文件来定义Hadoop守护进程的日志配置。

### HDFS集群配置方法与最佳实践 HDFSHadoop Distributed File System)是Hadoop生态系统中的核心组件之一,用于存储大规模数据集。以下是关于HDFS集群配置的详细方法和最佳实践: #### 1. HDFS集群的基本概念与特性 HDFS是一种分布式文件系统,设计目标是运行在普通硬件上,具有高容错性、高吞吐量等特性[^1]。它将文件分割成块(默认为128MB),并将这些块分布到集群中的不同节点上。 #### 2. 配置环境准备 在开始配置之前,需要确保以下准备工作已经完成: - 确保所有节点之间可以通过SSH免密登录。 - 所有节点的时间同步(可以使用NTP服务)。 - 安装配置JDK环境,确保Java版本满足Hadoop的要求[^3]。 #### 3. HDFS集群配置过程 以下是HDFS集群配置的具体步骤: #### 3.1 下载并解压Hadoop软件包 从Hadoop官网下载对应的tar包,并上传至服务器。例如: ```bash wget https://downloads.apache.org/hadoop/common/hadoop-3.1.3/hadoop-3.1.3.tar.gz tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/ ``` 将解压后的Hadoop目录移动到指定路径[^2]。 #### 3.2 修改Hadoop配置文件 进入Hadoop配置文件路径,修改相关配置文件: ```bash cd /opt/module/hadoop-3.1.3/etc/hadoop/ ``` ##### 3.2.1 `hadoop-env.sh` 和 `yarn-env.sh` 设置JAVA_HOME路径: ```bash export JAVA_HOME=/usr/java/jdk1.8.0_XXX ``` ##### 3.2.2 `core-site.xml` 配置HDFS名称节点(NameNode)的地址: ```xml <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://namenode:9000</value> </property> </configuration> ``` ##### 3.2.3 `hdfs-site.xml` 配置数据块副本数和数据节点(DataNode)的存储路径: ```xml <configuration> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>/home/hadoop/data/namenode</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/home/hadoop/data/datanode</value> </property> </configuration> ``` ##### 3.2.4 `mapred-site.xml` 和 `yarn-site.xml` 配置MapReduce框架和YARN资源管理器的相关参数。例如,在`yarn-site.xml`中配置ResourceManager地址: ```xml <configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>resourcemanager</value> </property> </configuration> ``` ##### 3.2.5 `slaves` 文件 列出所有从节点主机名或IP地址: ```bash datanode1 datanode2 datanode3 ``` #### 3.3 同步配置文件到所有节点 将主节点上的Hadoop和JDK目录复制到所有从节点: ```bash scp -r /opt/module/hadoop-3.1.3/ hadoop22@10.103.105.83:/opt/module/ scp -r /usr/java/jdk1.8.0_XXX/ hadoop22@10.103.105.83:/usr/java/ ``` #### 3.4 启动HDFS集群 格式化名称节点: ```bash hdfs namenode -format ``` 启动HDFS和YARN服务: ```bash start-dfs.sh start-yarn.sh ``` #### 4. 测试与验证 使用以下命令测试HDFS是否正常工作: ```bash hdfs dfs -mkdir /test hdfs dfs -put /local/file.txt /test/ hdfs dfs -ls /test/ ``` #### 5. 注意事项 - 确保所有节点的防火墙已关闭或开放必要的端口。 - 定期检查日志文件以排查问题。 - 根据实际需求调整数据块大小和副本数[^1]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值