zoukankan      html  css  js  c++  java
  • hadoop2.2分布式环境搭建

    hadoop2.2的分布式环境需要配置的参数更多。但是需要安装的系统软件和单节点环境是一样的。

    运行hadoop在非安全环境

    hadoop的配置文件有两类:
    1:只读的默认配置文件: core-default.xml,hdfs-default.xml,yarn-default.xml mapred-default.xml
    2: 可配置的配置文件: core-site.xml,hdfs-site.xml,yarn-site.xml,mapred-site.xml
     
    除此之外,还可以修改bin目录下面的shell脚本,或者是hadoop-env.sh,yarn-env.sh。
     
    为了配置集群,需要配置hadoop进程运行需要的环境参数。hadoop的守护进程为NameNode/DataNode和ResourceManager
     

    配置hadoop进程的环境参数

    管理员需要使用conf/hadoop-env.sh和conf/yarn-env.sh脚本来定制化hadoop进程的环境。最少也要配置JAVA_HOME环境。大多数情况下需要制定HADOOP_PID_DIR和HADOOP_SECURE_DIR来指定目录,改目录是启动hadoop进程的用户可以写入的。
     例如:export HADOOP_NAMENODE_OPTS="-XX:+UseParallelGC ${HADOOP_NAMENODE_OPTS}"
    如果我们想通过调试的方式来了解系统的运行价格可以在这个里面配置调试参数,配置参数如下:
    -agentlib:jdwp=transport=dt_socket,address=localhost:${JVM_DEBUG_PORT},server=y,suspend=${JVM_SUSPEND}  -jvm_args={JVM_ARGS}
     
    除了这些参数我们可以配置别的参数
    1:HADOOP_LOG_DIR YARN_LOG_DIR 指定日志文件的保存目录。
    2:HADOOP_HEAPSIZE  YARN_HEAPSIZE  用来配置进程使用的堆的大小,单位是MB
    提示:堆大小=young+old  
     

    配置hadoop进程的配置参数

    1:core-site.xml
    fs.defaultFS   指定namenode的URL
    io.file.buffer.size  读写SequenceFile的大小
     
    2:hdfs-site.xml
    dfs.namenode.name.dir   指定一个本地文件系统路径来存储命名空间和日志。如果多个目录用逗号分隔,那么保存多个副本到这些目录中
    dfs.namenode.hosts/dfs.namenode.hosts.excude  允许和排除的datanode的主机名
    dfs.blocksize            datanode的数据块大小
    dfs.namenode.handler.count   100   设置namenode的线程数据来出路datanode的rpc调用
    dfs.datanode.data.dir       数据块的存储目录,用逗号分隔,通常是每个硬盘做为一个目录。加快数据读写
     
    3:yarn-site.xml
    配置ResourceManager和NodeManager
    yarn.acl.anable  是否允许acl,默认是false    ACL:访问控制列表 表现为rwxrwxrwx
    yarn.admin.acl              管理员的acl控制。
    yarn.log-aggregation-enable     配置是否允许日志合并。
     
    配置RescourceManger
    yarn.resourcemanager.address                                            ResourceManager  host:port ,客户端通过它来提交任务
    yarn.resourcemanager.scheduler.address                                  ResourceManager  host:port ,ApplicationMaster告诉scheduler来获得资源
    yarn.resourcemanager.resource-tracker.address                         ResourceManager  host:port ,NodeManager通过该URL来连接ResourceManager
    yarn.resourcemanager.webapp.address                              ResourceManager  host:port   web-ui的host:port
    yarn.resourcemanager.admin.address                               ResourceManager 的host:port 用来接收管理员的命令参数
    yarn.resourcemanger.scheduler.class                              ResourceManager协调类 。 CapacityScheduler (recommended), FairScheduler (also recommended), or FifoScheduler、
    yarn.resourcemanager.minimum-allocation-mb    作业最小可申请的内存大小。
    yarn.resourcemanager.maximum-allocation-mb    作业最大可申请的内存大小
    yarn.resourcemanager.nodes.include-path/
    yarn.resourcemanager.nodes.exclude-path       许可和排除的NodeManager的列表。
     
    配置NodeManger
    yarn.nodemanager.resource.memeory-mb
    yarn.nodemamager.vmem-pmem-ration            虚拟内存使用可以超过物理内存的最大比例 ,有点像虚拟内存空间。
    yarn.nodemanager.local-dirs                  逗号分隔的本地文件路径,用来写入中间文件。多个文件可以扩展磁盘的io
    yarn.nodemanager.log-dirs                    逗号分隔的本地文件路径,用来写入日志
    yarn.nodemanager.log.retain-seconds          如果log-aggregation为false那么设置该值表示日志最大的保留时间  单位是秒
    yarn.nodemanager.remote-app-log-dir
    yarn.nodemanager.remote-app-log-dir-suffix
    yarn.nodemanager.aux-services                 默认值mapreduce_shuffle 
     
    4:mapred-site.xml
    mapreduce.framework.name                        yarn
    mapreduce.map.memory.mb                         1536
    mapreduce.map.java.opts                         -Xms1024M
    mapreduce.reduce.memory.mb                      3072
    mapreduce.reduce.java.opts                      -Xms2560M
    mapreduce.task.io.sort.mb                       用来数据的排序的最大内存
    mapreduce.task.io.sort.factor                   当排序的可以一次合并多少个流
    mapreduce.reduce.shuffle.parallelcopies         当运行reduce的时候并行复制map任务输出的最大个数。
    配置MapReduce jobhistory
    mapreduce.jobhistory.address                     MapReduce jobhistory的服务
    mapreduce.jobhistory.webapp.address
    mapreduce.jobhistory.intermediate-done-dir       用些写入MapReduce作业历史文件的目录
    mapreduce.jobhistory.done-dir                    MapReduce JobHistory服务器管理的目录   

    HADOOP的机架感知

    HDFS和YARN都是机架感知的
    NameNode和ResourceManager通过调用一个resolve的API(管理配置模块)获取到集群中slaver的机架信息。该api能解析DNS的名称到机架ID.
    用户可以配置topology.node.switch.mapping.impl。该配置默认的实现运行了一个脚本使用了topology.script.file.name的配置参数,如果该配置参数未设置。将返回一个默认的机架ID.

    检测NodeManager的健康

    hadoop提供了一种机制,管理员可以配置一个NodeManager周期性来运行一个管理员提供的脚本来决定这个节点的是否健康。
    脚本打印一个error日志,然后NodeManager检测到这个日志发送一个不健康的心跳到ResourceManager,ResourceManger接受到之后把它拉黑。如果后面后没出现error,就拉百。
    在yarn-site.xml需要配置如下的参数
     

    Slavers File

    通常是选择集群中一个机器作为NameNode。一个机器最为ResourceManager,剩下的机器作为DataNode和NodeManager。他们被归类为slavers.
    在conf/slaves中列出所有slave的主机名,每个一行。
     

    配置集群

    如果上面都配置好了,分发这些配置文件到集群所有机器的HADOOP_CONF_DIR目录中去。
     

    HADOOP集群启动

    1:格式化分布式文件系统:    hdfs  namenode -format
    2: 启动HDFS的namenode    hadoop-daemon.sh --config $HADOOP_CONF_DIR  --script  hdfs start namenode
    3: 启动HDFS的所有的datanode    hadoop-daemon.sh --config $HADOOP_CONF_DIR  --script  hdfs start datanode
    4: 启动YARN的ResourceManager  $HADOOP_YARN_HOME/sbin/yarn-daemon.sh --config $HADOOP_CONF_DIR start resourcemanager
    5: 启动YARN的所有的NodeManager $ $HADOOP_YARN_HOME/sbin/yarn-daemon.sh --config $HADOOP_CONF_DIR start nodemanager
    6:启动的webappproxy服务器  $HADOOP_YARN_HOME/sbin/yarn-daemon.sh start proxyserver --config $HADOOP_CONF_DIR
    7: 启动MapReduce JobHistory $ $HADOOP_PREFIX/sbin/mr-jobhistory-daemon.sh start historyserver --config $HADOOP_CONF_DIR
     
     
     
     
     
     
     
     
     
     
     





  • 相关阅读:
    三级菜单打怪升级,young -> plus -> pro
    Python注释是什么东东
    腾讯云中的mysql镜像数据定时同步到本机数据库
    linux重复命令的简洁化
    快速查询mysql中每个表的数据量
    MGR与MHA
    mysql基础练习
    mongo日常操作备忘
    MongoDB:删除操作
    MongoDB插入数据的3种方法
  • 原文地址:https://www.cnblogs.com/gaoxing/p/5001176.html
Copyright © 2011-2022 走看看