`
hmilyzhangl
  • 浏览: 45092 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

hadoop集群配置--成功运行

阅读更多

── 分布式计算开源框架Hadoop入门实践

 

其实参看Hadoop官方文档已经能够很容易配置分布式框架运行环境了,不过这里既然写了就再多写一点,同时有一些细节需要注意的也说明一下,其实 也就是这些细节会让人摸索半天。Hadoop可以单机跑,也可以配置集群跑,单机跑就不需要多说了,只需要按照Demo的运行说明直接执行命令即可。这里 主要重点说一下集群配置运行的过程。

 

实验环境:hadoop-0.20.2

 

3台普通的机器,操作系统都是Linux。内存和CPU就不说了,反正Hadoop一大特点就是机器在多不在精。JDK必须是1.5以上的,这个切记。3台机器的机器名务必不同,后续会谈到机器名对于MapReduce有很大的影响。

 

部署考虑

对于Hadoop的集群来说,可以分成两大类角色:Master和Slave,前者主要配置NameNode和JobTracker的角色,负责总管分布式数据和分解任务的执行,后者配置DataNode和TaskTracker的角色,负责分布式数据存储以及任务的执行(一般master只有一个,slave有多少)。

 

IP;10.0.98.171     namenode jobTracker

IP:10.0.98.172      datanode taskTracker

IP:10.0.98.173      datanode taskTracker

 

实施步骤

  1. 在所有的机器上都建立相同的目录,也可以就建立相同的用户,以该用户的home路径来做hadoop的安装路径。例如我在所有的机器上都建立了/home/hadoopInstall
  2. 下载Hadoop,先解压到Master上。这里我是下载的0.20.2的版本。此时Hadoop的安装路径就是/home/ hadoopInstall /hadoop-0.20.2
  3. 解压后进入conf目录,主要需要修改以下文件:hadoop-env.shcore-site.xmlmastersslaves,mapred-set.xml这五个配置文件。

 

Hadoop的基础配置文件是hadoop-default.xml ,看Hadoop的代码可以知道,默认建立一个Job的时候会建立Job的Config,Config首先读入hadoop-default.xml 的配置,然后再读入core-site.xml 的配置(这个文件初始的时候配置为空),core -site.xml 中主要配置你需要覆盖的hadoop-default.xml 的系统级配置,以及你需要在你的MapReduce过程中使用的自定义配置(具体的一些使用例如final等参考文档)。

 

以下是一个简单的core -site.xml 的配置:

 

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>

    <property>
        <name>fs.default.name</name>  //你的namenode的配置,机器名加端口

       <value>hdfs://10.0.98.171:9000</value>

    </property>
    <property>
        <name>dfs.replication</name> //数据需要备份的数量,默认是三
        <value>1</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>  //Hadoop的默认临时路径,这个最好配置,如果在新增节点或者其他情况下莫名其妙的DataNode启动不了,就删除此文件中的tmp目录即可。不过如果删除了NameNode机器的此目录,那么就需要重新执行NameNode格式化的命令。
        <value>/home/hadoop/tmp</value>
    </property>

</configuration>

 

hadoop-env.sh 文件只需要修改一个参数:

 

# The java implementation to use.  Required.
export JAVA_HOME=/usr/java/jdk1.6.0_26      //配置java的环境变量,记住一定要1.5版本以上,免得莫名其妙出现问题。

 

Masters中配置Masters的IP或者机器名,如果是机器名那么需要在/etc/hosts 中有所设置。Slaves中配置的是Slaves的IP或者机器名,同样如果是机器名需要在/etc/hosts 中有所设置。范例如下,我这里配置的都是IP:

      Masters:
     10.0.98.171

      Slaves:
     10.0.98.172
     10.0.98.173

  1. 建立Master到每一台Slave的SSH受信证书。由于Master将会通过SSH启动所有Slave的Hadoop,所以需要建立单向或者双向证书保证命令执行时不需要再输入密码。在Master和所有的Slave机器上执行:ssh-keygen -t dsa 。执行此命令的时候,看到提示只需要回车。然后就会在/root/.ssh/ 下面产生id_rsa.pub 的证书文件,并将其改名为authorized_keys,然后通过scp将Master机器上的这个文件拷贝到Slave上(记得修改名称),例如:scp root@masterIP:/root/.ssh/authorized_keys /root/.ssh/authorized_keys ,可以打开这个文件看看,也就是rsa的公钥作为key,user@IP作为value。此时可以试验一下,从master ssh到slave已经不需要密码了。由slave反向建立也是同样。为什么要反向呢?其实如果一直都是Master启动和关闭的话那么没有必要建立反 向,只是如果想在Slave也可以关闭Hadoop就需要建立反向。
  2. 将Master上的Hadoop通过scp拷贝到每一个Slave相同的目录下,根据每一个Slave的Java_HOME 的不同修改其hadoop-env.sh
  3. 修改Master上/etc/profile: 新增以下内容:(具体的内容根据你的安装路径修改,这步只是为了方便使用)                                                                                                                                                                                                                                                                                                                          export HADOOP_HOME=/home/wenchu/hadoop-0.17.1
    export PATH=$PATH:$HADOOP_HOME/bin
    修改完毕后,执行source /etc/profile 来使其生效。
  4. 配置mapreduce (修改配置文件mapred-site.xml),所有节点相同                                                      <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

    <!-- Put site-specific property overrides in this file. -->

    <configuration>
        <property>
            <name>mapred.job.tracker</name>
            <value>10.0.98.171:9001</value>
        </property>   
    </configuration>
  5. 在Master上执行Hadoop namenode –format ,这是第一需要做的初始化,可以看作格式化吧,以后除了在上面我提到过删除了Master上的hadoop.tmp.dir 目录,否则是不需要再次执行的。
  6. 然后执行Master上的start-all.sh ,这个命令可以直接执行,因为在6中已经添加到了path路径,这个命令是启动hdfs和mapreduce两部分,当然你也可以分开单独启动hdfs和mapreduce,分别是bin目录下的start-dfs.shstart-mapred.sh
  7. 检查Master的logs目录,看看Namenode日志以及JobTracker日志是否正常启动。
  8. 检查Slave的logs目录看看Datanode日志以及TaskTracker日志是否正常。
  9. 如果需要关闭,那么就直接执行stop-all.sh 即可。

以上步骤就可以启动Hadoop的分布式环境,然后在Master的机器进入Master的安装目录,执行hadoop jar hadoop-0.20.2-examples.jar wordcount 输入路径和输出路径,就可以看到字数统计的效果了。此处的输入路径和输出路径都指的是HDFS中的路径,因此你可以首先通过拷贝本地文件系统中的目录到HDFS中的方式来建立HDFS中的输入路径:

hadoop dfs -copyFromLocal /home/hadoopInstall/test-in test-in。 其中/home/hadoopInstall/test-in 是本地路径,test-in 是将会建立在HDFS中的路径,执行完毕以后可以通过hadoop dfs –ls 看到test-in目录已经存在,同时可以通过hadoop dfs –ls test-in 查看里面的内容。输出路径要求是在HDFS中不存在的,当执行完那个demo以后,就可以通过hadoop dfs –ls 输出路径看到其中的内容,具体文件的内容可以通过hadoop dfs –cat 文件名称来查看。

经验总结和注意事项(这部分是我在使用过程中花了一些时间走的弯路):

  1. Master和Slave上的几个conf配置文件不需要全部同步,如果确定都是通过Master去启动和关闭,那么Slave机器上的配置不需要去维护。但如果希望在任意一台机器都可以启动和关闭Hadoop,那么就需要全部保持一致了。
  2. Master和Slave机器上的/etc/hosts 中必须把集群中机器都配置上去,就算在各个配置文件中 使用的是IP。这个吃过不少苦头,原来以为如果配成IP就不需要去配置Host,结果发现在执行Reduce的时候总是卡住,在拷贝的时候就无法继续下 去,不断重试。另外如果集群中如果有两台机器的机器名如果重复也会出现问题。
  3. 如果在新增了节点或者删除节点的时候出现了问题,首先就去删除Slave的hadoop.tmp.dir ,然后重新启动试试看,如果还是不行那就干脆把Master的hadoop.tmp.dir 删除(意味着dfs上的数据也会丢失),如果删除了Master的hadoop.tmp.dir ,那么就需要重新namenode –format
  4. Map任务个数以及Reduce任务个数配置。前面分布式文件系统设计提到一个文件被放入到分布式文件系统中,会被分割成多个block放置到每一个的DataNode上,默认dfs.block.size 应该是64M,也就是说如果你放置到HDFS上的数据小于64,那么将只有一个Block,此时会被放置到某一个DataNode中,这个可以通过使用命令:hadoop dfsadmin –report 就可以看到各个节点存储的情况。也可以直接去某一个DataNode查看目录:hadoop.tmp.dir/dfs/data/current 就 可以看到那些block了。Block的数量将会直接影响到Map的个数。当然可以通过配置来设定Map和Reduce的任务个数。Map的个数通常默认 和HDFS需要处理的blocks相同。也可以通过配置Map的数量或者配置minimum split size来设定,实际的个数为:max(min(block_size,data/#maps),min_split_size) 。Reduce可以通过这个公式计算:0.95*num_nodes*mapred.tasktracker.tasks.maximum

总的来说出了问题或者启动的时候最好去看看日志,这样心里有底。

Hadoop中的命令(Command)总结

这部分内容其实可以通过命令的Help以及介绍了解,我主要侧重于介绍一下我用的比较多的几个命令。Hadoop dfs 这个命令后面加参数就是对于HDFS的操作,和Linux操作系统的命令很类似,例如:

  • Hadoop dfs –ls 就是查看/usr/root目录下的内容,默认如果不填路径这就是当前用户路径;
  • Hadoop dfs –rmr xxx 就是删除目录,还有很多命令看看就很容易上手;
  • Hadoop dfsadmin –report 这个命令可以全局的查看DataNode的情况;
  • Hadoop job 后面增加参数是对于当前运行的Job的操作,例如list,kill等;
  • Hadoop balancer 就是前面提到的均衡磁盘负载的命令。

其他就不详细介绍了。

 

 

分享到:
评论
1 楼 everist 2011-11-19  
3.如果在新增了节点或者删除节点的时候出现了问题,首先就去删除Slave的hadoop.tmp.dir ,然后重新启动试试看,如果还是不行那就干脆把Master的hadoop.tmp.dir 删除(意味着dfs上的数据也会丢失),如果删除了Master的hadoop.tmp.dir ,那么就需要重新namenode –format 。

在生产环境中是不能这么做的吧?

相关推荐

    Hadoop分布式集群配置指南

    Hadoop集群配置指南,成功实现了由5台计算机构成的集群,并成功运行wordcount处理大型数据(大于50G)

    Hadoop的安装、配置过程和集群运行截图。

    较为完善的Hadoop伪分布式安装、配置过程以及运行截图 全程跟着安装配置的一般不会出现问题,jdk版本尽量选择和Hadoop版本相容的,Hadoop版本可以选择较低版本,2.7版本较为稳定,Linux系统版本没有多大要求,一般将...

    Hadoop集群搭建指南.pdf

    要想深入的学习Hadoop数据分析技术,首要的任务是必须要将hadoop集群环境搭建起来,可以将hadoop简化地想象成一个小软件,通过在各个物理节点上安装这个小软件,然后将其运行起来,就是一个hadoop分布式集群了。...

    大数据运维技术第5章 Hadoop集群运行课件.pptx

    5.2 配置Hadoop格式化;;5.3 查看JAVA进程;查看JAVA进程;查看JAVA进程;查看JAVA进程;5.4 查看HDFS的报告;查看HDFS 报告;查看HDFS 报告;5.5 使用浏览器查看节点状态 ;在浏览器的地址栏输入:50070,进入页面可以查看...

    hadoop:Mesos上的Hadoop

    Mesos上的Hadoop概述要在Mesos上运行Hadoop,您需要将hadoop-mesos-0.1.0.jar库添加到Hadoop发行版(使用protobuf&gt; 2.5.0的任何发行版)中,并设置一些新的配置属性。 继续阅读以获取详细信息。 包含的pom.xml已针对...

    Hadoop2.2.0集群安装

    Hadoop2.2.0完全分布式集群平台安装设置 HDFS HA架构: 1、先设定电脑的IP为静态地址: 2、设置各个主机的hostname 3、在所有电脑的/etc/hosts...10、查看Hadoop是否运行成功 详细讲解了Hadoop的配置文件 和 QJM的安装

    Ubuntu10.04下Hadoop-0.20.2集群配置手册.doc

    我先交待一下我自己的环境: 两台机器,每台机器上面两个虚机(vmware 均以桥接方式,也就是说4个虚机都有各自独立的内网IP)都是ubuntu10.04,宿主机...最后按下文配置,成功运行~另:机器之间的文件用SCP命令吧,好使~~~

    hadoop集群虚拟机环境准备.txt

    查看是否关闭成功 service iptables status #iptables:未运行防火墙。 chkconfig --list iptables #iptables 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭 2. 创建一个一般用户atguigu useradd usr100...

    linux(centos 6.5)hadoop集群搭建。

    包含hadoop-2.6.4.tar包、搭建集群详情文档(每一步的步骤及代码、搭建前的环境配置)。亲测可成功运行。

    Hadoop-2.4.0+Hbase-0.94.18+Nutch-2.3集群爬虫配置攻略

    使用github中最新的nutch-2.x源码,奋战10天拿下的Hadoop-2.4.0+Hbase-0.94.18+Nutch-2.3配置攻略,在ubuntu14.04上成功运行本地和分布式爬虫。文档详细描述了三者版本不兼容问题的解决方案以及各个配置文件的详细...

    Hadoop实战手册

    Hive 部署和安装27#安装Hadoop集群,看EasyHadoop安装文档。27#安装Mysql,启动Mysql,检查gc++包。27#解压Hive包并配置JDBC连接地址。27#启动Hive thrift Server。27#启动内置的Hive UI。274. Hive Cli 的基本用法28#...

    hadoopHA配置.txt

    hadoop的ha配置过程,亲自搭建测试过,hdfs和yarn的HA都完美运行,mapreduce提交到集群中也运行成功。

    Hadoop权威指南 第二版(中文版)

     本书是Hadoop权威参考,程序员可从中探索如何分析海量数据集,管理员可以从中了解如何安装与运行Hadoop集群。 目录 第1章 初识Hadoop  数据!数据!  数据存储与分析  与其他系统相比  关系型数据库管理系统...

    Hadoop权威指南(中文版)2015上传.rar

    利用基准测试程序测试Hadoop集群 Hadoop基准测试程序 用户的作业 云上的Hadoop Amazon EC2上的Hadoop 第10章 管理Hadoop HDFS 永久性数据结构 安全模式 日志审计 工具 监控 日志 度量 Java管理扩展(JMX) 维护 日常...

    Hadoop综合分析报告.pdf

    的修改与更新 Ambari 的界面更友好,可以很方便的修改集群配置, ClouderaManager 的配置界面不是太方便,有些配置没法改。 3.支持的组件,HDP 基本上支持所有的开源大数据组件,CDH 也基本上支持所有 的开源大数据...

    hadoop2.4.1三台机器分布式安装

    这里还配置了一个zookeeper集群,用于ZKFC(DFSZKFailoverController)故障转移,当Active NameNode挂掉了,会自动切换Standby NameNode为standby状态 2.hadoop-2.2.0中依然存在一个问题,就是ResourceManager只有...

    基于hadoop实现的商品推荐系统+源代码+文档说明.

    4.将集群上的四个xml配置文件放到resources目录中。 5.在HDFS集群的根目录下创建目录: -------- 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,...

    大数据与Hadoop.doc

    2.1 Hadoop的核心模块 Hadoop Common:Hadoop的公用应用模块,是整个Hadoop项目的核心,为Hadoop各子项目提供各 种工具,如配置文件和日志操作等,其他Hadoop子项目都是在此基础上发展起来的。 Hadoop Distributed ...

    Spark-Core学习知识笔记整理

    2.3Spark-Standalone集群配置 9 2.4Spark-on-Yarn模式配置 12 2.5Spark-on-Mesos模式配置 13 2.6Hive-on-Spark配置 13 第三章 Spark计算模型 15 1 RDD编程 15 1.1弹性分布式数据集RDD 15 1.2构建RDD对象 15 2RDD操作...

Global site tag (gtag.js) - Google Analytics