zoukankan      html  css  js  c++  java
  • hadoop学习(二)hadoop集群的启动

    一、完全分布式集群环境的搭建

      1、配置hosts文件:将三台集群服务器的主机名与IP的对应关系互相配置到对方的hosts文件中,以便对方服务器能通过主机名寻找IP,hosts文件在/etc目录下。

      2、建立hadoop运行账号,这个就不说了。

      3、配置ssh免密码连入,配置这个地方可能会出现问题,具体细节看上一篇博客。

      4、下载并解压hadoop安装包,需要说明的是最好是先chmod更改一下权限,使用tar xzvf 包名 来解压。

      5、在namenode节点上配置hadoop:

        (1)修改~/hadoop-0.20.2/conf目录下的core-size.xml文件内容,用来配置namenode节点IP和断口,如下:

          <configuration>

            <property>

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

              <value>hdfs://namenode服务器ip地址:9000</value>

            </property>

          </configuration>

        (2)修改~/hadoop-0.20.2/conf目录下的hdfs-site.xml文件内如,用来配置备份数据的份数,如下:

          <configuration>

            <property>

              <name>dfs.replication</name>

              <value>2(数据备份两台服务器)</value>

            </property>

          </configuration>

        (3)修改~/hadoop-0.20.2/conf目录下的mapred-site.xml文件内容,用来配置jobtracker服务器的IP和断口,如下:

          <configuration>

            <property>

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

              <value>jobtracker服务器的IP地址:9001</value>

            </property>

          </configuration>

        (4)修改~/hadoop-0.20.2/conf目录下的masters和slaves文件,masters文件中写namenode节点和jobtracker节点的主机名,slaves文件中写datanode和tasktracker的主机名。

        (5)修改~/hadoop-0.20.2/conf目录下的hadoop-env.sh文件,修改hadoop的jkd环境变量,找到export JAVA_HOME这一行,取消注释,更改jdk安装路径。

        (6)将修改完成后的hadoop-0.20.2目录复制到另外两台datanode节点上,我是复制安装包过去解压,namenode上配置好了之后,将其conf目录复制过去覆盖即可。

        (7)格式化分布式文件系统:

           A、cd ~/hadoop-0.20.2/

           B、bin/hadoop namenode -format

           C、当有“successfully formatted”等字符出现时,表面格式化成功。

        (8)在namenode节点的hadoop解压目录下执行命令:bin/start-all.sh,即可启动namenode进程、jobtracker进程、secondarynamenode进程、datanode进程、tasktracker进程。在namenode节点下使用:~/jdk1.6.0_45/bin/jps命令,可以看到启动了NameNode进程、JobTracker进程、econdaryNameNode进程和Jps进程。在datanode节点下使用该命令,可以看到启动了DataNode进程、TaskTracker进程和Jps进程。

    二、完成分布式搭建后出现的问题。

      按照上面的步骤,是搭建成功了的,使用JPS命令,也看到对应的守护进程启动了的。可以第二天过来再次用start-all.sh脚本启动进程的时候发现悲剧了,namenode进程和jobtracker进程没有起来,SecondaryNamenode进程倒是跑起来了。在看datanode节点,发现DataNode进程和TaskTracker进程倒是起来了。然后就是逐步解决问题,步骤如下:

      1、NameNode节点没有启动,用hadoop namenode -format命令格式化namenode节点,之后再次启动,发现NameNode进程启动了,但是JobTracker进程没有启动。

      2、继续,删除/tmp目录下的文件,因为进程启动后会生成一些文件默认存放在/tmp目录下,然后删除~/hadoop-0.20.2/data目录下的所有内容,使用stop-all.sh脚本关闭所有进程后再次启动所有进程,发现NameNode进程和JobTracker进程起来了,再到datanode节点下看看,发现DataNode节点没有起来,悲剧!!

      3、继续排错,发现好像是因为格式化namenode次数过多,datanode节点上存放的还是之前的namenodeID,所以删除datanode节点下~/hadoop-0.20.2/data目录下所有内容,再次重启namenode节点上的守护进程,namenode没问题,datanode也没问题,ok终于搞定。

    三、注意事项:      

      1、可以不用配置hosts文件,在master、slave文件中给出具体IP就行。

      2、在真实集群环境中,使用以下几步替换上面的几个步骤:

        (1)使用DNS服务器的域名解析功能来替代修改hosts文件。

        (2)使用NFS实现密钥共享,替换ssh免密码登录。

        (3)使用awk工具编写脚本,批量复制hadoop。

  • 相关阅读:
    基于Form表单和AJAX的登录示例
    HTML表格与表单
    HTML基础
    如何在AWS中部署Java Web应用程序?
    AWS前沿云计算课程——快速学会云上部署及Web应用程序管理
    如何在AWS云上部署应用
    Java知识系统回顾整理01基础02面向对象02属性
    Java知识系统回顾整理01基础02面向对象01类和对象
    Java知识系统回顾整理01基础01第一个程序07Eclipse使用----找不到类如何解决?
    Java知识系统回顾整理01基础01第一个程序06Eclipse使用技巧
  • 原文地址:https://www.cnblogs.com/gaojiang/p/4389592.html
Copyright © 2011-2022 走看看