Hadoop Cluster Setup(2.2)
【Installation】
下载hadoop安装文件并在解压在指定路径下,通常把hadoop安装在所有nodes中的相同路径下,便于集群管理。典型的拓扑结构为,集群中一个node为namenode,其他多个节点为datanodes;在mapreduce中,其中一个节点作为ResourceManager,其他多个节点作为NodeManager;其中Namenode和ResourceManager分别为HDFS、YARN(Mapreduce)的master,DataNodes和NodeManager分别为HDFS、YARN的slavers。Namenode和ResourceManager可以部署在不同的节点上(而且通常是),NodeManager节点必须为HDFS集群节点的子集,而且通常不会在NameNode上启用nodemanager。
【Running Hadoop in Non-Secure Mode】
Hadoop中有2种配置文件,其中系统默认配置“core-default.xml”"hdfs-default.xml""yarn-default.xml""mapred-default.xml"为只读,不能修改(除非重新编译打包);在hadoop的安装目录下($HADOOP_HOME/etc/hadoop)下与上述对应的几个文件是可以修改的,例如“core-site.xml”"hdfs-size.xml"等,通常开发者需要修改这些文件来指定相关配置信息。
<> 环境变量
此外,hadoop-env.sh,yarn-env.sh分别为hdfs和yarn的启动脚本,我们也可以在这两个文件中修改配置文件所在的路径。比如修改hadoop-env.sh中“HADOOP_CONF_DIR”,或者在yarn-env.sh中修改“YARN_CONF_DIR”。不过只能修改路径,配置文件的名称不能改变。
对于管理员而言,需要修改hadoop-env.sh和yarn-env.sh,来指定hadoop的各个守护集成的环境参数,其中JAVA_HOME是必须要调整的:
##hadoop-env.sh,yarn-env.sh中指定 export JAVA_HOME=/opt/app/jdk1.6.0_45
大多数情况下,还需要指定HADOOP_PID_DIR/HADOOP_SECURE_DN_PID_DIR,即守护进程启动后PID信息写入的路径。
export HADOOP_PID_DIR=/var/hadoop/pids export HADOOP_SECURE_DN_PID_DIR=${HADOOP_PID_DIR}
因为hadoop是基于JVM,所以我们还需要为它的各个守护进程分配合适的HEAP大小以及GC策略,如下配置仅供参考,hadoop-env.sh:
export HADOOP_HEAPSIZE=1024 export HADOOP_NAMENODE_INIT_HEAPSIZE="512" # default for all,will append to name_node/data_node OPTS export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true -XX:MaxPermSize=256M -XX:SurvivorRatio=6 -XX:+UseConcMarkSweepGC -XX:MaxTenuringThreshold=3 -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSCompactAtFullCollection" # Command specific options appended to HADOOP_OPTS when specified export HADOOP_NAMENODE_OPTS="-Dhadoop.security.logger=${HADOOP_SECURITY_LOGGER:-INFO,RFAS} -Dhdfs.audit.logger=${HDFS_AUDIT_LOGGER:-INFO,NullAppender} $HADOOP_NAMENODE_OPTS -Xmx2048M" export HADOOP_DATANODE_OPTS="-Dhadoop.security.logger=ERROR,RFAS $HADOOP_DATANODE_OPTS -Xmx2048M" export HADOOP_SECONDARYNAMENODE_OPTS="-Dhadoop.security.logger=${HADOOP_SECURITY_LOGGER:-INFO,RFAS} -Dhdfs.audit.logger=${HDFS_AUDIT_LOGGER:-INFO,NullAppender} $HADOOP_SECONDARYNAMENODE_OPTS -Xmx2048M"
yarn进程也需要简单的调整JVM相关参数,yarn-env.sh:
# Specify the max Heapsize for the ResourceManager using a numerical value # in the scale of MB. # This value will be overridden by an Xmx setting specified in either YARN_OPTS # and/or YARN_RESOURCEMANAGER_OPTS. export YARN_RESOURCEMANAGER_HEAPSIZE=1024 export YARN_RESOURCEMANAGER_OPTS="" # Specify the max Heapsize for the NodeManager using a numerical value # in the scale of MB. # This value will be overridden by an Xmx setting specified in either YARN_OPTS # and/or YARN_NODEMANAGER_OPTS. export YARN_NODEMANAGER_HEAPSIZE=1024 export YARN_NODEMANAGER_OPTS=""
管理员可以像hadoop-env.sh中那样,为yarn指定JVM OPTS,本例中省略了此值。
JVM环境变量配置项参考表:
进程 | 环境变量 |
NameNode | HADOOP_NAMENODE_OPTS |
DataNode | HADOOP_DATANODE_OPTS |
Secondary NameNode | HADOOP_SECONDARYNAMENODE_OPTS |
ResourceManager | YARN_RESOURCEMANAGER_OPTS |
NodeManager | YARN_NODEMANAGER_OPTS |
Mapreduce Job History Server | HADOOP_JOB_HISTORYSERVER_OPTS |
JVM Heap大小配置所对应的环境变量:
进程 | 环境变量 |
ResourceManager | YARN_RESOURCEMANAGER_HEAPSIZE |
NodeManager | YARN_NODEMANAGER_HEAPSIZE |
NameNode/DataNode | HADOOP_HEAPSIZE(默认为1G) |
MapReduce Job History Server | HADOOP_JOB_HISTORYSERVER_HEAPSIZE |
上述环境变量分别在hadoop-env.sh和yarn-env.sh中配置。
此外还有一个很重要的参数,就是日志文件的路径,通常我们需要修改“HADOOP_LOG_DIR”、“YARN_LOG_DIR”两个参数的值。
<>重要参数配置
1. core-site.xml(Hadoop-Common组件)
参数 | 参考值 | 描述 |
fs.defaultFS | NameNode URI |
hdfs://host:port/ 原”fs.default.name” |
file.blocksize | 134217728 |
HDFS Block文件大小,默认为64M 建议为128或者更大。 将由“dfs.blocksize”覆盖 |
hadoop.tmp.dir | /var/hadoop/tmp | 临时文件路径 |
file.replication | 1 |
bloick的备份个数 事实上此参数不会产生效果,将有 hdfs-site.xml中的“dfs.replication”覆盖 |
hadoop.security.authorization | false | 是否启用授权验证 |
io.file.buffer.size | 131072 | hdfs文件读写缓冲区大小 |
io.compression.codecs | <空> | 文件采用的压缩算法 |
2. hdfs-site.xml(HDFS组件)
参数 | 参考值 | 备注 |
dfs.replication | 3 | hdfs block备份个数,默认为3 |
dfs.blocksize | 128m |
block大小,可以使用“m”“g”等字母 后缀表示单位 |
dfs.client.block.write.retries | 3 | 当写入失败时,最多重试次数 |
dfs.heartbeat.interval | 3 | datanode与namenode的心跳时间间隔,单位:秒 |
dfs.namenode.replication.interval | 3 | namenode检测数据备份情况的时间间隔,单位:秒 |
dfs.namenode.handler.count | 32 |
namenode并发处理请求的线程数, 默认为10 |
dfs.namenode.name.dir | /data/hadoop/dfs/name |
namenode存储namespace信息的 本地路径 |
dfs.datanode.data.dir | /data/hadoop/dfs/data | datanode存储实际数据block的文件路径 |
dfs.namenode.checkpoint.dir | /data/hadoop/dfs/namesecondary |
SecondaryNamode/Checkpoint Node 保存checkpoint信息的路径 |
dfs.permissions.enabled | false | 默认为true,文件读写时,是否检测权限。 |
dfs.datanode.address | 0.0.0.0:50010 | datanode启动的端口号 |
dfs.namenode.hosts / dfs.namenode.hosts.exclude |
<空> |
在namenode上生效,用来设定允许通讯 的datanode列表 |
dfs.namenode.logging.level | info | namenode上日志级别 |
3. yarn-site.xml(YARN组件)
参数 | 参考值 | 备注 |
yarn.acl.enable | false | 是否开启yarn资源控制 |
yarn.log-aggregation-enable | false | 是否开启log的聚合功能 |
参数 | 参考值 | 备注 |
yarn.resourcemanager.address | rm-host:8032 |
resourceManager的通讯地址 host:port |
yarn.resourcemanager.scheduler.address | rm-host:8030 |
resourceManager上用来 与ApplicationMasters 通讯的地址, host必须为resourceManager地址 |
yarn.resourcemanager.resource-tracker.address | rm-host:8031 | |
yarn.resourcemanager.webapp.address | rm-host:8088 | resourcemanager web页面 |
yarn.resourcemanager.scheduler.class |
资源调度器,class类全名,必须为ResourceScheduler子类 默认为org.apache.hadoop.yarn.server. resourcemanager.scheduler.capacity.CapacityScheduler 其他可选:FairScheduler,FifoScheduler |
|
yarn.scheduler.minimum-allocation-mb | 1024 |
ResourceManager可为资源请求者分配Container的最小内存量,单位Mb,默认1024 如果任务较小可以适度减少此值,一般为512 |
yarn.scheduler.maximum-allocation-mb | 8192 |
ResourceManager允许请求分配Container的最大内存量,单位mb,默认为8192, 如果任务较小或者物理内存较少, 可以减少此值,一般为2048 |
yarn.resourcemanager.nodes.include-path / yarn.resourcemanager.nodes.exclude-path |
<空> |
ResourceManager允许(不允许)获取资源的nodemanager列表 此处为本地路径的一个文件,文件每行一个nodemanager的host地址 |
参数 | 参考值 | 备注 |
yarn.nodemanager.resource.memory-mb | 4096 |
当前nodemanager可供Containers使用的总物理内存量。 此值不能大于platform下可供JVM使用的最大内存。 |
yarn.nodemanager.vmem-pmem-ratio | 2.1 |
默认值为2.1,当container使用内存超过其分配的内存时, 可已使用虚拟内存为其物理内存的比例。swap! |
yarn.nodemanager.local-dirs | /data/hadoop/yarn/local | nodemanager产生临时数据的保存地址。 |
yarn.nodemanager.log-dirs | /data/hadoop/yarn/logs | 日志保存地址,默认为/logs |
yarn.nodemanager.log.retain-seconds | 10800 |
当log-aggregation关闭时,nodemanager保存用户日志的时长, 单位:秒。 |
yarn.nodemanager.aux-services | mapreduce_shuffle | mappreduce使用的shuffle服务,目前只能为此值 |
yarn.application.classpath |
建议保持默认,yarn框架依赖的classpath,如果开发者额外的调整 框架的服务,在默认值的基础上,增加jar路径。 |
4. mapred.xml(mapreduce组件)
参数 | 参考值 | 备注 |
mapreduce.framework.name |
yarn local |
mapreduce使用的框架名称,可选“yarn”或者“local” 对于hadoop 2.2+,必须使用yarn。 |
mapreduce.map.memory.mb | 1024 | map任务所能使用的最大内存量 |
mapreduce.map.java.opts mapreduce.reduce.java.opts |
-Xms1024m | JVM进程参数 |
mapreduce.reduce,memory.mb | 2048 |
reduce任务进程所能消耗的最大内存量, reduce涉及到大量排序和key分组,建议内存 设置比map稍大 |
mapreduce.task.io.sort.mb | 512 |
map、reduce在排序时使用内存缓冲区的大小 越大排序效率越高,建议256,默认为100,单位:mb |
mapreduce.task.io.sort.factor | 100 | 在排序时,“merge”阶段,每次最大规约的文件个数 |
mapreduce.reduce.shuffle.parallelcopies | 12 |
reduce进程在shuffle阶段,并发copy远程文件的 并发数。此值越大copy效率越高,性能消耗越大。 |
mapreduce.cluster.local.dir | mapreduce保存数据的本地路径 | |
mapreduce.job.maps | 2 |
每个job默认map的个数 在yarn框架下,可能无效。 在新mapreduce api下无效 |
mapreduce.job.reduces | 1 |
每个job默认reduce的个数 在yarn框架下,可能无效。 |
mapreduce.task.timeout | 30000 | task未响应时间超过此值,将会被kill |
mapreduce.map.maxattempts | 3 | map任务在失败时最大重试的次数 |
mapreduce.reduce.maxattemts | 3 | |
mapreduce.jobtracker.restart.recover | false | yarn下可能无效 |
mapreduce.job.ubertask.enable | false |
默认为false,是否开启“ubertask”, 此后小的job将会依次在同一个JVM中运行。 |
mapreduce.job.ubertask.maxmaps | 4 |
如果job中map的个数小于此值,那么次job将 被认为是“ubertask” |
mapreduce.job.ubertask.maxreduces | 1 | 同上 |
mapreduce.job.ubertask.maxbytes |
如果job的输入文件大小小于此值,此job将 被认为是“ubertask”,默认为dfs.blocksize |
|
mapreduce.map.output.compress | false |
map的输出结果是否启动压缩 可以在job jar中配置。 |
yarn.app.mapreduce.am.resource.mb | 1024 | applicationMaster进程需要占用的内存。 |
mapreduce新api中所有的参数均已"mapreduce."开头,基于yarn框架时以“yarn.”开头的参数被支持,在yarn下,部分mapreduce参数将不能发挥效果。
5. slaves
在ect/hadoop目录下,有个slaves文件,这个文件中, 保存所有的DataNodes或者NodeManagers节点的地址,此文件可以帮助hadoop master轮流启动整个集群。NameNode的地址可以在hdfs-site.xml配置,ResourceManager的地址可以在yarn-site.xml中配置,如果你希望NameNode节点上也可以启动DataNode进程,也可以在slaves文件中配置;通常在集群中,除了Namenode和ResourceManager之外的其他所有节点,都应该配置在slaves文件中。
此外,master文件已经不再需要,其中secondaryNameNode、backup Node的位置,可以在hdfs-site.xml中配置。
【Hadoop Rack Awareness】
HDFS和yarn组件都是Rack-aware的。[机架感知]
NameNode和ResourceManager通过管理员配置的“Resolve API”获取slaves节点的rack信息,API将DNS Name解析成相应的Rack id标识。
可以通过core-site.xml中的"net.topology.node.switch.mapping.impl"和“net.topology.script.file.name”两个配置项来实现Rack Id的解析。其中"net.topology.script.file.name"用来指定“解析DNS Name”的脚本名称,一般为.sh文件,通常放置在etc/hadoop目录下,这个脚本的作用,就是接收一个序列的DNS参数列表,并按照顺序返回对应的Rack ID名称。"net.topology.node.switch.mapping.impl"默认值为"org.apache.hadoop.net.ScriptBasedMapping",将使用上述指定的脚本来解析Rack,如果没有配置脚本文件,那么所有的节点的rack Id为“/default-rack”。
此外开发者可以根据时机情况来自定义“net.topology.node.switch.mapping.impl”的实现,通常继承“AbstractDNSToSwitchMapping”类即可。
【Logging】
Hadoop使用apache log4j作为日志输出框架,开发者可以通过修改etc/hadoop/log4j.properties文件来调整相关日志参数,对于mapreduce/cascading等第三方日志输出,也可以(而且是必须)修改此log4j.properties文件以增加相关的日志输出控制。例如我们希望在自己的mapreduce程序中输出日志:
##customer mapreduce log log4j.appender.STATISTIC=org.apache.log4j.DailyRollingFileAppender log4j.appender.STATISTIC.File=/data/logs/statistic/mapred-all.log log4j.appender.STATISTIC.DatePattern=.yyyy-MM-dd log4j.appender.STATISTIC.layout=org.apache.log4j.PatternLayout log4j.appender.STATISTIC.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} %5p %c{1} [%L]-%m%n ##所有的com.thirdpart.statistic.mapred包下的日志全部输出 log4j.logger.com.thirdpart.statistic.mapred=INFO,STATISTIC
【分布式操作】
当一台机器的所有配置文件调整完毕后,需要把配置文件同步到所有节点上,即确保集群中所有的机器上配置文件一致,不过slaves文件可以只在NameNode、SecondaryNameNode、ResourceManager上。
“rsync”辅助工具可以帮我们做到这些,如果没有安装rsync,可以首先安装和配置rsync同步server列表。
因为hadoop会使用ssh做无密码登录,所以进群中所有的节点必须安装ssh套件,以及配置相关的授权信息。
1) 集群配置完成后,首先在NameNode上,进入bin目录下,运行"./hdfs namenode -format";此命令为“格式化”命令,将会为进群生成cluster相关的约束性信息。
2) 启动hdfs集群:进入sbin目录,执行“start-dfs.sh”。此命令还可以指定hadoop的相关配置文件路径。关闭dfs可以使用"stop-dfs.sh"。
3) 如果集群需要运行yarn集群或者mapreduce框架(包括cascading、hive、spark等),则需要通过“start-yarn.sh”启动yarn进程。可以通过“stop-yarn.sh”来关闭yarn进程。
相关推荐
iOS版微信抢红包Tweak.zip小程序
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过严格测试运行成功才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
基于springboot社区停车信息管理系统.zip
基于springboot南皮站化验室管理系统源码数据库文档.zip
## 数据指标说明 全要素生产率(TFP)也可以称之为系统生产率。指生产单位(主要为企业)作为系统中的各个要素的综合生产率,以区别于要素生产率(如技术生产率)。测算公式为:全要素生产率=产出总量/全部资源投入量。 数据测算:包含OL、FE、LP、OP、GMM共五种TFP测算方法!数据结果包括excel和dta格式,其中重要指标包括证券代码,固定资产净额,营业总收入,营业收入,营业成本,销售费用,管理费用,财务费用,购建固定资产无形资产和其他长期资产支付的现金,支付给职工以及为职工支付的现金,员工人数,折旧摊销,行业代码,上市日期,AB股交叉码,退市日期,年末是否ST或PT等变量指标分析。文件包括计算方法说明及原始数据和代码。 数据名称:上市公司全要素生产率TFP数据及测算方法(OL、FE、LP、OP、GMM) 数据年份:2000-2023年 数据指标:证券代码、year、TFP_OLS、TFP_FE、TFP_LP1、TFP_OP、TFP_OPacf、TFP_GMM
内容概要:本文详细总结了多种编程语言下常用的算法实现资源,涵盖Python、C++、Java等流行编程语言及其相关的开源平台、在线课程和权威书籍。对于每种语言而言,均提供了具体资源列表,包括开源项目、标准库支持、在线课程及专业书籍推荐。 适合人群:适用于所有希望深入研究并提高特定编程语言算法能力的学习者,无论是编程新手还是有一定经验的技术人员。 使用场景及目标:帮助开发者快速定位到合适的算法学习资料,无论是出于个人兴趣自学、面试准备或是实际工作中遇到的具体算法问题,都能找到合适的解决方案。 其他说明:文中提及多个在线学习平台和社区网站,不仅限于某一特定语言,对于跨学科或多元化技能培养也具有很高的参考价值。
基于springboot的交通旅游订票系统源码数据库文档.zip
内容概要:本文档是一份详细的GO语言教程,涵盖了Go语言的基础语法、数据类型、控制结构、函数、结构体、接口以及并发编程等多个方面。主要内容包括Go语言的基本概念和历史背景、环境配置、基本语法(如变量、数据类型、控制结构)、函数定义与调用、高级特性(如闭包、可变参数)、自定义数据类型(如结构体、接口)以及并发编程(如goroutine、channel、select)等内容。每部分内容都附有具体的代码示例,帮助读者理解和掌握相关知识点。 适合人群:具备一定编程基础的开发者,尤其是希望深入学习和应用Go语言的技术人员。 使用场景及目标:①初学者通过本教程快速入门Go语言;②有一定经验的开发者系统复习和完善Go语言知识;③实际项目开发中利用Go语言解决高性能、高并发的编程问题。 阅读建议:本文档全面介绍了Go语言的各项基础知识和技术细节,建议按章节顺序逐步学习,通过动手实践代码示例加深理解。对于复杂的概念和技术点,可以通过查阅更多资料或进行深入研究来巩固知识。
GEE训练教程
memcached笔记资料,配套视频:https://www.bilibili.com/list/474327672?sid=4486766&spm_id_from=333.999.0.0&desc=1
基于springboot校内跑腿业务系统源码数据库文档.zip
计算机控制光感自动窗帘控制系统设计.doc
基于SpringBoot的校园服务系统源码数据库文档.zip
基于SpringBoot+Vue的美容店信息管理系统源码数据库文档.zip
基于springboot程序设计基础课程辅助教学系统源码数据库文档.zip
这是一个原生的JS网页版斗地主小游戏,代码注释全。带有斗地主游戏基本的地主、选牌、提示、出牌、倒计时等功能。简单好玩,欢迎下载
基于springboot亚运会志愿者管理系统源码数据库文档.zip
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过严格测试运行成功才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
GEE训练教程——Landsat5、8和Sentinel-2、DEM和各2哦想指数下载
基于springboot家校合作平台源码数据库文档.zip