2.4.2 Hadoop配置

修改Hadoop的主要配置文件,文件路径:/opt/software/hadoop/etc/hadoop

  • 1. slaves

    master
    node1
    node2
    node3
    node4
    node5
    node6
    
  • 2. hadoop-env.sh

    在export JAVA_HOME=${JAVA_HOME}前添加

    export JAVA_HOME=/opt/software/openjdk
    # NN分配32G内存,SN分配32G内存,DN分配6G内存,原默认都是1G内存
    # 添加以下参数(原参数保留):
    export HADOOP_NAMENODE_OPTS="-Xmx32000m $HADOOP_NAMENODE_OPTS"
    export HADOOP_SECONDARYNAMENODE_OPTS="-Xmx32000m $HADOOP_SECONDARYNAMENODE_OPTS"
    export HADOOP_HEAPSIZE=6000
    
  • 3. yarn-env.sh

    修改RESOURCEMANAGER内存
    添加如下参数
    export YARN_RESOURCEMANAGER_HEAPSIZE=3000
    
  • 4. core-site.xml

    <configuration>
        <property>
        <!-- 默认文件系统的名称,一个URI,用于确定文件系统的主机、端口 -->
            <name>fs.defaultFS</name>
            <value>hdfs://master:9000</value>
        </property>
        <property>
        <!-- HDFS文件临时目录,/data1目录即为之前划分的数据盘 -->
            <name>hadoop.tmp.dir</name>
            <value>/data3/hdfsdata</value>
        </property>
        <property>
        <!-- 分钟数,在此时间之后,检查点将被删除 -->
            <name>fs.trash.interval</name>
            <value>1440</value>
        </property> 
        <property>
        <!-- 接受客户端连接的服务器的侦听队列的长度,需要对somaxconn配置进行调整,参考2.2.2环境配置部分 -->
            <name>ipc.server.listen.queue.size</name>
            <value>32768</value>
    </property>
    <property>
    <!--断开与服务器连接的时间为6秒  -->
      <name>ipc.client.connection.maxidletime</name>
      <value>60000</value>
    </property>
     <property>
    <!-开启服务器端TCP连接算法 -->
         <name>ipc.server.tcpnodelay</name>
         <value>true</value>
     </property>
     <property>
         <!--Reader的个数 -->
         <name>ipc.server.read.threadpool.size</name>
         <value>10</value>
     </property>
    </configuration>
    
  • 5. hdfs-site.xml

    <configuration>
        <property>
        <!-- hdfs文件副本数 -->
            <name>dfs.replication</name>
            <value>2</value>
    </property>
     <property>
        <!-- 禁用 hdfs filesystem cache -->
            <name>fs.hdfs.impl.disable.cache</name>
            <value>true</value>
        </property>
        <property>
        <!-- 禁用 hdfs filesystem cache -->
            <name>fs.file.impl.disable.cache</name>
            <value>true</value>
        </property>
        <property>
        <!-- 关闭HDFS权限检查 -->
            <name>dfs.permissions.enabled</name>
            <value>false</value>
        </property>
        <property>
        <!-- 确定DFS数据节点在本地文件系统上的哪个位置存储其块,/data1和/data2即为之前划分的数据盘 -->
            <name>dfs.datanode.data.dir</name>
            <value>/data3/hdfsdata/data,/data4/hdfsdata/data</value>
        </property> 
        <property>
        <!-- 确定DFS节点在本地文件系统上存储文件的位置,多目录列表实现冗余效果 -->
            <name>dfs.namenode.name.dir</name>
            <value>/data3/hdfsdata/namenode</value>
        </property>
        <property>
        <!-- Secondary NameNode web管理端口 -->
            <name>dfs.secondary.http.address</name>
            <value>node1:50090</value>
        </property>
        <property>
        <!-- DataNode 最大传输线程数 -->
            <name>dfs.datanode.maxtransfer.threads</name>
            <value>10240</value>
    </property>
    <property>
    <!-- hadoop磁盘存储策略调整由轮询改为磁盘适配-->
    <name>dfs.datanode.fsdataset.volume.choosing.policy</name>
    <value>org.apache.hadoop.hdfs.server.datanode.fsdataset.AvailableSpaceVolumeChoosingPolicy</value>
    </property>
      <property>
        <!--块写入出错时的重试次数-->
        <name>dfs.client.block.write.retries</name>
        <value>15</value>
      </property>
    <property>
        <!--hdfs客户端超时时间毫秒,解决IO超时问题-->
            <name>dfs.client.socket-timeout</name>
            <value>600000</value>
        </property>
    <property>
        <!--hdfs存储段写入超时时间毫秒,解决IO超时问题 -->
            <name>dfs.datanode.socket.write.timeout</name>
            <value>600000</value>
        </property>
    <property>
    <!--调度数据移动方案的线程池大小 -->
            <name>dfs.balancer.dispatcherThreads</name>
            <value>4096</value>
        </property>
    <property>
    <!--移动数据移动方案的线程池大小 -->
            <name>dfs.mover.moverThreads</name>
            <value>4096</value>
        </property>
    <property>
    <!--socket的读超时时间 -->
            <name>dfs.datanode.socket.reuse.keepalive</name>
            <value>600000</value>
        </property>
    <property>
           <!--数据节点断电,文件完全同步到磁盘 -->
            <name>dfs.datanode.synconclose</name>
            <value>true</value>
        </property>
    <property>
        <!--此配置指定datanode将尝试读取的当前读取位置前面的字节数 -->
            <name>dfs.datanode.readahead.bytes</name>
            <value>131072</value>
        </property>
    <property>
        <!--用于短路读取的socket缓存容量 -->
            <name>dfs.client.socketcache.capacity</name>
            <value>128</value>
        </property>
    <property>
        <!--用于短路读取的socket缓存过期时间,单位为毫秒 -->
            <name>dfs.client.socketcache.expiryMsec</name>
            <value>600000</value>
        </property>
    <property>
        <!--额外的edit日志段的最大数量 -->
            <name>dfs.namenode.max.extra.edits.segments.retained</name>
            <value>2016</value>
        </property>
    <property>
        <!--写入danode的客户端socket超时时间,单位为毫秒 -->
            <name>dfs.datanode.socket.write.timeout</name>
            <value>600000</value>
        </property>
    <property>
        <!--做balance时每个dn移动块的最大并行线程数 -->
            <name>dfs.datanode.balance.max.concurrent.moves</name>
            <value>600</value>
        </property>
    <property>
        <!--支持DFS客户端的hedged读取,正数为开启-->
            <name>dfs.client.hedged.read.threadpool.size</name>
            <value>300</value>
        </property>
    <property>
        <!--配置DFS客户端的hedged读取。属性值为启动hedged读取前的等待时间-->
            <name>dfs.client.hedged.read.threshold.millis</name>
            <value>100</value>
        </property>
    <property>
        <!--datanode进行传输数据的最大线程数-->
            <name>dfs.datanode.max.transfer.threads</name>
            <value>10240</value>
        </property>
    <property>
        <!--RPC服务器的监听client线程数,如果dfs.namenode.servicerpc-address属性没有配置,则线程会监听所有节点的请求-->
            <name>dfs.namenode.handler.count</name>
            <value>1024</value>
        </property>
    <property>
        <!--datanode的服务器线程数-->
            <name>dfs.datanode.handler.count</name>
            <value>512</value>
        </property>
    <property>
        <!---->
            <name>dfs.datanode.handler.count</name>
            <value>512</value>
        <description>Thenumberofserverthreadsforthedatanode.</description>
        </property>
    
        <property>
            <!--只有当dfs.namenode.servicerpc-address属性配置后,该属性才有效。用于配置datanode和其它非client节点的监听线程数-->
            <name>dfs.namenode.service.handler.count</name>
            <value>40</value>
        </property>
    </configuration>
    
  • 6. mapred-site.xml

    复制:cp mapred-site.xml.template mapred-site.xml

    添加如下property属性配置

    <configuration>
        <property>
        <!-- 使用yarn运行mapreduce,非本地运行 -->
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
    </configuration>
    
  • 7. yarn-site.xml

    <configuration>
        <property>
        <!-- RM的主机名 -->
            <name>yarn.resourcemanager.hostname</name>
            <value>master</value>
        </property>
        <property>
        <!-- Application执行结束后延迟604800s即7天,删除本地文件及日志 -->
            <name>yarn.nodemanager.delete.debug-dely-sec</name>
            <value>604800</value>
        </property>
        <property>
    <!-- 可分配给容器的物理内存总量 -->
    <!--所以分配的内存为Executor数量*64G:4*64*1024 -->
            <name>yarn.nodemanager.resource.memory-mb</name>
            <value>32768</value>
        </property>
        <property>
        <!-- 分配给AM单个容器可申请的最小内存,推荐默认分配内存 -->
            <name>yarn.scheduler.minimum-allocation-mb</name>
            <value>40</value>
        </property>
        <property>
        <!-- 分配给AM单个容器可申请的最大内存 -->
            <name>yarn.scheduler.maximum-allocation-mb</name>
            <value>65536</value>
        </property>
        <property>
        <!-- 该节点上YARN可使用的虚拟CPU个数,默认是8,推荐将该值设值为与逻辑CPU核数数目相同 -->
            <name>yarn.nodemanager.resource.cpu-vcores</name>
            <value>40</value>
        </property>
        <property>
        <!-- 单个任务可申请的最大虚拟CPU个数,默认是32 -->
            <name>yarn.scheduler.maximum-allocation-vcores</name>
            <value>32</value>
        </property>
        <property>
        <!-- 是否将对容器实施物理内存限制 -->
            <name>yarn.nodemanager.pmem-check-enabled</name>
            <value>false</value>
        </property>
        <property>
        <!-- 是否将对容器实施虚拟内存限制 -->
            <name>yarn.nodemanager.vmem-check-enabled</name>
            <value>false</value>
        </property>
        <property>
            <!-- 用于存储本地化文件的目录列表 -->
            <name>yarn.nodemanager.local-dirs</name>
            <value>/data3/yarn/yarnlogs,/data4/yarn/yarnlogs</value>
        </property>
            <property>
            <!-- 全局的applicationmaster重试次数的限制 -->
            <name>yarn.resourcemanager.am.max-attempts</name>
            <value>1000</value>
    </property>
    <property>
        <!-- 资源调度模型 -->
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
         <!-- 资源调度模型  -->
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
    </configuration>
    
  • 8. 运行hdfs和yarn

    在/opt/software/hadoop/目录下执行一次格式化命令:
    ./bin/hdfs namenode -format
    然后在/opt/software/hadoop/sbin目录下,执行:
    sh start-dfs.sh
    sh start-yarn.sh
    主节点进程:namenode + resourcemanager + nodemanager + datanode,可使用jps验证
    子节点进程:datenode + nodemanager + secondarnamenode(只有一台机器上有SN),可使用jps查看验证
    子节点进程:datanode + nodemanager,可使用jps查看验证
    可在部署Hadoop的节点上登陆浏览器查看:master:50070
    
Copyright © lucene.xin 2020 all right reserved修改时间: 2021-07-02 11:42:23

results matching ""

    No results matching ""