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

hadoop 安装部署调优

阅读更多

一、集群安装

     1.在所有的机器上建立相同的用户名,如:hadoop

                $adduser hadoop

                $passwd hadoop

2./etc/hosts中添加机器名和IP

              hadoop@hadoop23:~/hadoop/hadoop-1.2.1/conf$ cat /etc/hosts

127.0.0.1       localhost

#127.0.1.1      hadoop23

 

# The following lines are desirable for IPv6 capable hosts

::1     ip6-localhost ip6-loopback

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

 

192.168.4.22     hadoop22

192.168.4.23     hadoop23

3.  在所有机器上安装ssh,然后相互分发,让整个集群都免密码登录。

   安装openssh-server:

         $sudo apt-get install openssh-server

   $ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
   $ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

                 将公钥拷贝到集群中其他的机器

    scp  ~/.ssh/id_dsa   hadoop23@192.168.4.23:/home/hadoop/ 

               关闭防火墙

   service iptables stop

4.安装JDK,设置JAVA_HOME环境变量

                 建议安装64位的JDK.

                 设置JAVA_HOME

                $vi  /etc/profile 

    export  JAVA_HOME=/home/hadoop/jdk

   Export PATH=$PATH:$JAVA_HOME 

   $source /etc/profile

5.安装HADOOP ,设置HADOOP_HOME环境变量

解压:$ tar zvxf   hadoop-1.2.1.tar.gz 

设置HADOOP_HOME

vi /etc/profile

Export HADOOP_HOME=/home/hadoop/hadoop-1.2.1

Export PATH=$PATH:$HADOOP_HOME

Source /etc/profile

            每一台机器上都走完以上的步骤之后,执行下面。

6.NameNode 格式化

      $hadoop  namenode -format 

7.启动集群

$start-all.sh

                    查看集群是否起来:jps 会在master 节点上看到namenode ,JobTraker ,secondNameNode 进程;在slave节点上看到datanode ,TaskTraker 进程。

 

二、配置

       Core-site.xml

<configuration>

        <property>

                <name>hadoop.tmp.dir</name>

                <value>/data</value>

                <description>A base for other temporary directories.</description>

        </property>

<!-- file system properties -->

        <property>

        <name>fs.default.name</name>

                <value>hdfs://192.168.4.23:9999</value>

        </property>

</configuration>

Mapred-site.xml

<configuration>

        <property>

                <name>mapred.job.tracker</name>

                <value>192.168.4.23:9001</value>

        </property>

        <property>

  <name>mapred.child.java.opts</name>

  <value>-Xmx2048m</value>

</property>

<property>

  <name>mapred.tasktracker.map.tasks.maximum</name>

  <value>3</value>

  <description>The maximum number of map tasks that will be run

  simultaneously by a task tracker.

  </description>

</property>

<property>

  <name>mapred.tasktracker.reduce.tasks.maximum</name>

  <value>1</value>

  <description>The maximum number of reduce tasks that will be run

  simultaneously by a task tracker.

  </description>

</property>

<property>

  <name>mapred.jobtracker.taskScheduler</name>

  <!--<value>org.apache.hadoop.mapred.JobQueueTaskScheduler</value>-->

  <value>org.apache.hadoop.mapred.FairScheduler</value>

  <description>The class responsible for scheduling the tasks.</description>

</property>

<property>

  <name>mapreduce.map.output.compress</name>

  <value>true</value>

</property>

<property>

  <name>mapred.child.env</name>

  <value>JAVA_LIBRARY_PATH=/home/hadoop/hadoop/lib/native/Linux-amd64-64</value>

</property>

<property>

  <name>mapreduce.map.output.compress.codec</name>

  <value>com.hadoop.compression.lzo.LzoCodec</value>

</property>

<property>

  <name>mapred.map.tasks.speculative.execution</name>

  <value>false</value>

</property>

<property>

<name>mapred.task.timeout</name> 

<value>6000000</value>

<description>The number of milliseconds before a task will be terminated if it neither reads an input, writes an output, nor updates its status string.

</description>

</property>

</configuration>

Hdfs-site.xm

<configuration>

        <property>

                <name>dfs.replication</name>

                <value>2</value>

        </property>

</configuration>

 

 

三、集群优化

mapred.task.timeout    6000000

fs.checkpoint.period 默认(3600秒),如果HDFS存取的次数频繁,可以减小该值。

fs.checkpoint.size  editlog 超过该值时会触发二级命名节点,默认64G

io.file.buffer.size 默认4096 SequenceFile buffer size,大型系统建议65536 到 131072

ipc.client.connection.maxidletime  HFDS Clinet 最大连接个数。

 

fs.trash.interval 清掉垃圾箱的时间

hadoop.native.lib  native libraries 并自动 load 进來使用,例如压缩类的 libraries 像 GZIP, LZO 等等。

 

dfs.block.size 

 

dfs.safemode.threshold.pct 只有当99.9% 的 blocks 达到最小的 dfs.replication.min 数量(默认是3)才会离开safe mode.在 dfs.replication.min 设的比较大或 data nodes 数量比较多时会等比较久。 

Dfs.namenode.handler.count  默认值 10

设定 namenode server threads 的数量,这些 threads 會用 RPC 跟其他的 datanodes 沟通。当 datanodes 数量太多时会发現很容易出現 RPC timeout,解決方法是提升网络速度或提高这个值,但要注意的是 thread 数量多也表示 namenode 消耗的内存也随着增加

 

dfs.datanode.handler.count默认3  datanode 的线程

dfs.datanode.max.xcievers    默认256  datanode默认的可以处理的最大文件数量

 

dfs.datanode.du.reserved 默认是0

默认值表示 data nodes 会使用整个磁盘,写满之后会导致无法再写入 M/R jobs。如果还有其他程式共用这些目录也会受到影响。建议保留至少 1073741824(1G) 的空间。

 

Io.sort.mb  默认100M   map中间结果的buffer

Io.sort.record.percent 默认0.05  io.sort.mb中用来保存map output记录边界的百分比,其他缓存用来保存数据。

 

Io.sort.spill.percent  map开始做spill的阈值

Io.sort.factor  做merge操作时同时操作stream的上限。

Min.num.spill.for.combine 合并函数运行的最小spill

Mapred.reduce.parallel.copies 默认5  每个reduce并行下载map结果的最大线程数 

 

Mapred.reduce.copy.backoff  reduce下载线程最大等待时间(in sec)

Mapred.job.shuffle.input.buffer.percent  默认0.7  用来缓存shuffle数据的reduce task heap百分比

Mapred.job.shuffle.merge.percent  默认0.66 缓存的内存中多少百分比后开始做merge 操作。

Mapred.job.reduce.input.buffer.percent  sort完成后reduce计算阶段用来缓存数据的百分比 

Mapred.map.tasks  每一个Job的map数量,尽量和机器数匹配。默认是数据分块大小。


Mapred.reduce.tasks 每个Job ,reduce 的数量,尽量和机器数匹配。

 四、Job调优

Mapred.child.java.opts  一般不要太大,不要超过2G,如果超过,需要改进程序。

Mapred.min.split.size 这个配置项决定了每个 Input Split的最小值,也间接决定了一个Job的map 数目。

Io.sort.mb  不要太大,如果设置成1G,很明显要排序会很费劲,如果设置小点,如30M,则会很快。

io.sort.spill.percent

这个值就是上述buffer的阈值,默认是0.8,既80%,当buffer中的数据达到这个阈值,后台线程会起来对buffer中已有的数据进行 排序,然后写入磁盘,此时map输出的数据继续往剩余的20% buffer写数据,如果buffer的剩余20%写满,排序还没结束,map task被block等待。

Io.sort.factor

同时打开的文件句柄的数量,默认是10

当 一个map task执行完之后,本地磁盘上(mapred.local.dir)有若干个spill文件,map task最后做的一件事就是执行merge sort,把这些spill文件合成一个文件(partition),有时候我们会自定义partition函数,就是在这个时候被调用的。

执行merge sort的时候,每次同时打开多少个spill文件,就是由io.sort.factor决定的。打开的文件越多,不一定merge sort就越快,所以也要根据数据情况适当的调整。

补充:merge排序的结果是两个文件,一个是index,另一个是数据文件,index文件记录了每个不同的key在数据文件中的偏移量(这就是partition)

mapred.reduce.parallel.copies

Reduce到每个完成的Map Task copy数据(通过RPC调用),默认同时启动5个线程到map节点取数据。这个配置还是很关键的,如果你的map输出数据很大,有时候会发现map早就 100%了,reduce一直在1% 2%。。。。。。缓慢的变化,那就是copy数据太慢了,5个线程copy 10G的数据,确实会很慢,这时就要调整这个参数了,但是调整的太大,又会事半功倍,容易造成集群拥堵,所以 Job tuning的同时,也是个权衡的过程,你要熟悉你的数据!

mapred.job.shuffle.input.buffer.percent

当 指定了JVM的堆内存最大值以后,上面这个配置项就是Reduce用来存放从Map节点取过来的数据所用的内存占堆内存的比例,默认是0.7,既 70%,通常这个比例是够了,但是我们讨论的还是大数据的情况,所以这个比例还是小了一些,0.8-0.9之间比较合适。(前提是你的reduce函数不 会疯狂的吃掉内存)

mapred.job.shuffle.merge.percent(默认值0.66)

mapred.inmem.merge.threshold(默认值1000)

这是两个阈值的配置项,第一个指的从Map节点取数据过来,放到内存,当达到这个阈值之后,后台启动线程(通常是Linux native process)把内存中的数据merge sort,写到reduce节点的本地磁盘;

第二个指的是从map节点取过来的文件个数,当达到这个个数之后,也进行merger sort,然后写到reduce节点的本地磁盘;这两个配置项第一个优先判断,其次才判断第二个thresh-hold。

从 实际经验来看,mapred.job.shuffle.merge.percent默认值确实太小了,完全可以设置到0.8左右;第二个默认值 1000,完全取决于map输出数据的大小,如果map输出的数据很大,默认值1000反倒不好,应该小一些,如果map输出的数据不大(light weight),可以设置2000或者以上,都没问题。

<!--EndFragment-->
1
0
分享到:
评论

相关推荐

    支持自动化Hadoop安装部署的研究.pdf

    参考文献中提到了其他与Hadoop相关的研究,如基于Hadoop架构的分布式计算和存储技术及其应用,基于HDFS的云数据备份系统,Hadoop框架的扩展和性能调优,以及数据中心Hadoop部署与追踪系统的研究。这些研究都为Hadoop...

    Hadoop 2.0安装部署方法

    本文档提供了Hadoop 2.0在Linux系统上安装部署的详细步骤和方法。 一、准备工作 首先,需要准备足够的硬件资源和软件包。硬件方面,测试环境通常需要一台配置较高(建议内存不小于4GB)的PC或服务器,而生产环境则...

    Cloudera Hadoop 5&amp;Hadoop高阶管理及调优课程

    Cloudera Hadoop 5&Hadoop高阶管理及调优课程,完整版,提供课件代码资料下载。 内容简介 本教程针对有一定Hadoop基础的学员,深入讲解如下方面的内容: 1、Hadoop2.0高阶运维,包括Hadoop节点增加删除、HDFS和...

    Hadoop2.2部署文档

    本文档旨在为初学者提供一个清晰、详尽的Hadoop部署流程,包括单机伪分布模式和多节点集群的安装与配置,帮助读者快速理解Hadoop的核心概念和实际操作。 1.2 背景 在Linux环境下部署Hadoop,需要对操作系统有基本的...

    机房hadoop集群部署

    2. **操作系统选择**:大多数Hadoop部署基于Linux环境,因为其稳定性和资源管理效率。常见的选择有CentOS、Ubuntu或Red Hat Enterprise Linux。 3. **Hadoop安装**:安装Hadoop通常涉及下载Apache Hadoop的最新稳定...

    Hadoop与HBase部署文档

    - **性能调优**:根据实际工作负载调整Hadoop和HBase的配置参数,如副本数、Block大小、内存分配等。 7. **安全与监控** - **安全设置**:启用Hadoop的安全模式,如Kerberos认证,保护集群数据安全。 - **监控...

    Hadoop 安装文档 性能测试

    本文将详细介绍Hadoop在Ubuntu系统上的安装过程以及初步的性能测试方法,旨在帮助读者理解和掌握Hadoop的基本部署与优化技巧。 #### 二、Hadoop安装准备 ##### 2.1 JDK安装 Hadoop的运行依赖于Java环境,因此首先...

    学习Hadoop开发运维和调优实战考试.pdf

    Hadoop 开发运维和调优实战考试 Hadoop 是一种基于 Java 的分布式计算框架,它主要由 HDFS(Hadoop Distributed File System)和 MapReduce 两个部分组成。HDFS 是一种分布式文件系统,负责存储数据,而 MapReduce ...

    hadoop性能调优与运维

    Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据...

    hadoop安装与移交.zip

    本压缩包文件“hadoop安装与移交.zip”包含了关于Hadoop及其相关生态组件如Hive、HBase和Kylin的安装、配置、调优以及安全性的详细资料,旨在帮助用户构建一个完整的大数据处理环境。 1. 大数据平台网络拓扑图.docx...

    software_hadoop.zip

    6. **Hadoop集群**:在生产环境中,Hadoop通常部署在集群上,需要考虑网络拓扑、硬件配置、安全性等因素。集群中的每个节点都需要安装Hadoop,并且正确配置为集群的一部分。 7. **Hadoop操作**:使用Hadoop涉及上传...

    大数据离线分析系统,基于hadoop的hive以及sqoop的安装和配置

    本主题将深入探讨如何构建一个基于Hadoop的大数据离线分析系统,并着重讲解Hive和Sqoop的安装与配置。Hadoop是分布式计算框架,而Hive是基于Hadoop的数据仓库工具,用于数据 warehousing 和 SQL-like 查询。另一方面...

    HADOOP集成组件CDH安装部署详细教程

    本教程将深入探讨如何在Linux系统上进行CDH的集成组件安装和部署。首先,我们需要理解分布式系统环境的基础配置,这通常涉及以下几个步骤: 1. **系统准备**:确保你的Linux服务器已经更新到最新版本,并且安装了...

    hadoop集群一键部署脚本

    当我们谈到“hadoop集群一键部署脚本”,这意味着有一个自动化工具,旨在简化在多台机器上安装和配置Hadoop、Spark和YARN的过程。 一键部署脚本通常包含以下几个核心部分: 1. **环境检查**:在部署开始前,脚本会...

    大数据技术Hadoop,zookeeper 部署

    【大数据技术Hadoop,Zookeeper部署】 大数据技术是现代信息技术领域的重要组成部分,它涉及数据的收集、存储、处理和分析。Hadoop是大数据处理的核心框架,而Zookeeper则是Hadoop生态系统中的协调服务,用于管理...

    安装hadoop集群

    本文将详细介绍在多节点环境下搭建Hadoop集群的过程,包括硬件准备、软件安装、配置优化等多个方面,旨在帮助读者掌握Hadoop集群的实际部署技巧。 #### 二、Hadoop集群概述 Hadoop集群主要由两个核心组件构成:...

    2.1 hadoop+hbase部署和测试1

    【Hadoop + HBase 部署与测试详解】 在构建大数据处理平台时,Hadoop 和 HBase 是两个至关重要的组件。Hadoop 是一个开源的分布式计算框架,它提供了高可靠性和高容错性的数据存储和处理能力。而 HBase 是基于 ...

    大数据技术之新能源汽车数仓 视频教程 下载

    17_hadoop的参数调优.mp4 18_kafka的安装部署.mp4 19_kafka命令行简单介绍.mp4 20_flume的安装及内存的调整.mp4 21_mysql的安装部署.mp4 22_mysql远程软件连接的问题解决.mp4 23_采集数据模拟生成展示.mp4 24...

    hadoop 64位下载 centos6.5环境编译

    根据实际需求,可能需要对Hadoop进行性能调优,比如调整内存分配、磁盘I/O、网络设置等。同时,定期进行数据检查和备份,以防止数据丢失。 以上就是关于在CentOS 6.5环境下编译和安装64位Hadoop的基本流程和关键...

    尚硅谷大数据技术之新能源汽车数仓-网盘下载.txt

    17_hadoop的参数调优.mp4 18_kafka的安装部署.mp4 19_kafka命令行简单介绍.mp4 20_flume的安装及内存的调整.mp4 21_mysql的安装部署.mp4 22_mysql远程软件连接的问题解决.mp4 23_采集数据模拟生成展示.mp4 24...

Global site tag (gtag.js) - Google Analytics