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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM