`
QING____
  • 浏览: 2251302 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hadoop分布式安装[官网整理]

 
阅读更多

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小程序

    iOS版微信抢红包Tweak.zip小程序

    毕业设计&课设_篮球爱好者网站,含前后台管理功能及多种篮球相关内容展示.zip

    该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过严格测试运行成功才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

    基于springboot社区停车信息管理系统.zip

    基于springboot社区停车信息管理系统.zip

    基于springboot南皮站化验室管理系统源码数据库文档.zip

    基于springboot南皮站化验室管理系统源码数据库文档.zip

    重磅,更新!!!上市公司全要素生产率TFP数据及测算方法(OL、FE、LP、OP、GMM)(2000-2023年)

    ## 数据指标说明 全要素生产率(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

    基于springboot的交通旅游订票系统源码数据库文档.zip

    GO语言教程:基础知识与并发编程

    内容概要:本文档是一份详细的GO语言教程,涵盖了Go语言的基础语法、数据类型、控制结构、函数、结构体、接口以及并发编程等多个方面。主要内容包括Go语言的基本概念和历史背景、环境配置、基本语法(如变量、数据类型、控制结构)、函数定义与调用、高级特性(如闭包、可变参数)、自定义数据类型(如结构体、接口)以及并发编程(如goroutine、channel、select)等内容。每部分内容都附有具体的代码示例,帮助读者理解和掌握相关知识点。 适合人群:具备一定编程基础的开发者,尤其是希望深入学习和应用Go语言的技术人员。 使用场景及目标:①初学者通过本教程快速入门Go语言;②有一定经验的开发者系统复习和完善Go语言知识;③实际项目开发中利用Go语言解决高性能、高并发的编程问题。 阅读建议:本文档全面介绍了Go语言的各项基础知识和技术细节,建议按章节顺序逐步学习,通过动手实践代码示例加深理解。对于复杂的概念和技术点,可以通过查阅更多资料或进行深入研究来巩固知识。

    time_series_at_a_point.ipynb

    GEE训练教程

    memcached笔记资料

    memcached笔记资料,配套视频:https://www.bilibili.com/list/474327672?sid=4486766&spm_id_from=333.999.0.0&desc=1

    基于springboot校内跑腿业务系统源码数据库文档.zip

    基于springboot校内跑腿业务系统源码数据库文档.zip

    计算机控制光感自动窗帘控制系统设计.doc

    计算机控制光感自动窗帘控制系统设计.doc

    基于SpringBoot的校园服务系统源码数据库文档.zip

    基于SpringBoot的校园服务系统源码数据库文档.zip

    基于SpringBoot+Vue的美容店信息管理系统源码数据库文档.zip

    基于SpringBoot+Vue的美容店信息管理系统源码数据库文档.zip

    基于springboot程序设计基础课程辅助教学系统源码数据库文档.zip

    基于springboot程序设计基础课程辅助教学系统源码数据库文档.zip

    原生JS实现斗地主小游戏源码.zip

    这是一个原生的JS网页版斗地主小游戏,代码注释全。带有斗地主游戏基本的地主、选牌、提示、出牌、倒计时等功能。简单好玩,欢迎下载

    基于springboot亚运会志愿者管理系统源码数据库文档.zip

    基于springboot亚运会志愿者管理系统源码数据库文档.zip

    毕业设计&课设_含多功能的远程控制工具集(已停维护),含命令行、文件管理、桌面功能.zip

    该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过严格测试运行成功才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

    Sen2_NDVI_Max.txt

    GEE训练教程——Landsat5、8和Sentinel-2、DEM和各2哦想指数下载

    基于springboot家校合作平台源码数据库文档.zip

    基于springboot家校合作平台源码数据库文档.zip

Global site tag (gtag.js) - Google Analytics