• Hadoop集群搭建


    1. 首先,准备好hadoop安装包和JDK,hadoop-1.0.3的svn版本库:http://svn.apache.org/repos/asf/hadoop/common/tags/release-1.0.3/, hadoop-1.0.3的安装包地址:http://archive.apache.org/dist/hadoop/core/hadoop-1.0.3/ 

    2. 建立后各个机器之间的ssh信任关系,假设现在有A,B两台机器,要建立起两台机器直接的信任关系,执行如下操作:  

      1)A机器免密码登陆到B机器  

            $ ssh-keygen –t rsa

            $ ssh-copy-id –i ~/.ssh/id_rsa.pub  hadoop@B

       2) B机器免密码登陆到A机器

            $ ssh-keygen –t rsa

            $ ssh-copy-id –i ~/.ssh/id_rsa.pub  hadoop@A

    3. 修改hadoop配置文件,修改的文件包括,hadoop-env.sh , core-site.xml , hdfs-site.xml, mapred-site.xml,masters和slaves文件

        需要注意的是,masteers文件中,配置的是secondary-namenode的ip地址,不要被master这个单词迷惑了,slaves中配置是需要启动datanode和tasktracker机器的IP地址。

        hadoop-env.sh,必须配置JAVA_HOME的路径

        image

      core-site.xml配置文件,需要在/home/hadoop/目录下,新建hadoop_tmp文件夹,这个文件夹作为hadoop.tmp.dir参数的value。

    image

    <?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>
      <value>hdfs://172.18.147.69:9000</value>
    
    </property>
    
    <property>
      <name>hadoop.tmp.dir</name>
      <value>/home/hadoop/hadoop_tmp/hadoop-${user.name}</value>
    
    </property>
    
    
    </configuration>

     

    hdfs-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>dfs.replication</name>
      <value>3</value>
    </property>
    
    </configuration>

     

    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>172.18.147.69:9001</value>
    
    </property>
    
    
    
    </configuration>

    masters文件没有配置任何内容,即没有secondary-namenode,如下:

    image

     

    slaves文件有一个IP地址,即只有一个datanode,如下:

    image

     

     

    4. 将hadoop的安装包和JDK拷贝到每一台机器上

    5. 在作为namenode的机器上执行格式化namenode命令和启动集群命令:

       1) ./hadoop namenode –format

        image

      2)执行启动集群的命令,./start-all.sh

         image

    6. 使用jps命令查看namenode和datanode上的进程:

    1)namenode上执行jps命令后的结果:

    image

    2)datanode上执行jps命令的结果:

    image

    7. 需要无法启动namenode的情况,在~/hadoop-1.0.3/logs/目录下,查看文件:hadoop-hadoop-namenode-ubuntu.ubuntu.log, 可以发现有异常抛出:

     

    2015-01-27 10:20:40,912 INFO org.apache.hadoop.metrics2.impl.MetricsConfig: loaded properties from hadoop-metrics2.properties
    2015-01-27 10:20:40,919 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source MetricsSystem,sub=Stats registered.
    2015-01-27 10:20:40,920 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Scheduled snapshot period at 10 second(s).
    2015-01-27 10:20:40,920 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: NameNode metrics system started
    2015-01-27 10:20:40,923 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: java.lang.IllegalArgumentException: Illegal character in 
    scheme name at index 0:  hdfs://172.18.147.69:9000
            at java.net.URI.create(URI.java:859)
            at org.apache.hadoop.fs.FileSystem.getDefaultUri(FileSystem.java:131)
            at org.apache.hadoop.hdfs.server.namenode.NameNode.getAddress(NameNode.java:228)
            at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:262)
            at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:496)
            at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1279)
            at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1288)
    Caused by: java.net.URISyntaxException: Illegal character in scheme name at index 0:  hdfs://172.18.147.69:9000
            at java.net.URI$Parser.fail(URI.java:2829)
            at java.net.URI$Parser.checkChars(URI.java:3002)
            at java.net.URI$Parser.checkChar(URI.java:3012)
            at java.net.URI$Parser.parse(URI.java:3028)
            at java.net.URI.<init>(URI.java:595)
            at java.net.URI.create(URI.java:857)
            ... 6 more

    经排查,原因是在配置core-site.xml中,hadoop.tmp.dir属性的时候,value值中多了空格,把空格去掉后,一切恢复正常:

    image

    8. Hadoop集群的监控页面,有HDFS是监控页面和Map/Reduce的监控页面

      1)在namenode的50070端口可以看到namenode的运行情况:http://172.18.147.69:50070/dfshealth.jsp 

    image

     

        2)在namenode的50030端口是jobtracker的状态页面,上面可以查看任务的运行情况:http://172.18.147.69:50030/jobtracker.jsp

    image

    9. Demo程序试跑

         在hdfs的/input目录下随便放一个文件,

    image

         hadoop-1.0.3/目录下执行:

         bin/hadoop jar hadoop-examples-1.0.3.jar wordcount /input /output 

    image   

    image

    在mapreduce的监控页面上可以看到任务的执行情况:

    image

    当任务执行完后,就可以在output目录下看到执行的结果,这个例子跑的是wordcount,可以看到结果中统计了所有单词的出现次数:

    image

  • 相关阅读:
    aspcms产品详情页调取相关产品
    构造函数中返回一个对象对结果有什么影响
    跨域的几种方法及案例代码
    localStorage兼容方案
    H5 拖放事件详解
    由作用域安全的构造函数想到的
    valueOf和toString的区别
    网页布局--自适应
    【MongoDB系列】简介、安装、基本操作命令
    【JavaWeb】之Servlet
  • 原文地址:https://www.cnblogs.com/justinzhang/p/4252409.html
Copyright © 2020-2023  润新知