Hadoop学习;测试;启动bug


一个Hadoop集群拥有多个并行的计算机,用以存储和处理大规模的数据集

Hadoop强调代码向数据迁移

要运行的程序在规模上比数据小的多,更容易移动,此外通过网络移动数据比加载运行程序更花时间,这样不如不移动数据,而是让运行程序(可执行代码)

加载到数据所在的机器上去

数据拆分后放在集群中分布,并且尽可能让计算也在同一台计算机上,最适合一次写入,多次读取的数据存储需求,在这方面它就像SQL世界的数据仓库

当你用MapReduce模型写应用程序,hadoop替你管理所有与扩展性相关的底层问题


NameNode位于HDFS主端,它指导端的I/O操作任务,NameNode是HDFS的书记员,它跟踪文件是如何分成文件块,以及这些文件块存在哪些存储节点,监控整个分布式系统是否正常运行状态。

运行NameNode,需要大量内存和I/O资源,不会同时是DataNode或者TaskTracker

每个HDFS集群的节点都会驻留一个DataNode守护进程,执行将HDFS数据块读取或写入到本地文件系统的文件中

当希望对HDFS文件读写时,文件被分割为多个快,由NameNode告知客户端每个数据块驻留在哪个DataNode

Datanode不断向NameNode报告。初始化时,每个DataNode将存储的数据块告知NameNode

Secondary NameNode(SNN)是一个用于监测HDFS集群状态的辅助进程,每个集群只有一个SNN,它独占一台服务器,它不会运行DataNode或TaskTracker守护进程。它不接收或记录HDFS的实时变化,它与NameNode通信,根据集群设置的时间间隔获取HDFS的元数据快照。

JobTracker是应用程序和Hadoop之间的纽带,一旦提交代码到集群上,JobTracker就会确定执行计划,它包括决定处理哪些文件,为不同的任务分配哪些节点以及监控所有任务的运行。如果任务失败,jobtracker会重启任务,但所分配的节点可能不同 ,同时受到预定义的重试次数限制,每个Hadoop集群只有一个jobtracker,它通常运行在集群服务器的主节点上,监测MapReduce作业的整个执行过程

TaskTracker管理每个任务在每个节点的执行情况,每个TaskTracker负责执行JobTracker分配的单项任务,虽然每个节点上仅有一个TaskTracker,但是每个TaskTracker可以生成多个JVM,来并行的处理许多Map或Reduce任务

TaskTracker的一个职责是持续不断的向JobTracker通信,如果JobTracker在指定时间内未收到TaskTracker的“心跳”,它会认为该节点的TaskTracker崩溃,进而提交相应的任务到集群的其他节点


单机模式,伪分布模式,全分布模式之间切换,使用符号链接而不是不断修改xml配置文件,需要为每种模式生成一个配置目录并存放相应的xml文件

然后可以使用linux命令 In -s conf.cluster conf  在不同配置之间切换,这个技巧有助于临时将一个节点从集群中分离出来。从而通过伪分布模式调试一个节点的MapReduce程序,但要确保这些模式在HDFS上有不同的文件存储位置,并在改配置之前停止所有守护进程


配完后使用jps查看,发现总是有一些没有启动,非常郁闷,在多番研究后发现有两个原因,一个是在/tmp目录下有以前使用2.02版本留下的文件没有删除,二个是因为端口被占用了

解决方法:

一.删除/tmp下的所有文件

[html] view plaincopy
  1. [root@localhost hadoop]# su -  
  2. [root@localhost ~]# cd /tmp/  
  3. [root@localhost tmp]# ls  
  4. hadoop-shen                        hsperfdata_shen  
  5. hadoop-shen-datanode.pid           Jetty_0_0_0_0_50030_job____yn7qmk  
  6. hadoop-shen-jobtracker.pid         Jetty_0_0_0_0_50070_hdfs____w2cu08  
  7. hadoop-shen-namenode.pid           Jetty_0_0_0_0_50075_datanode____hwtdwq  
  8. hadoop-shen-secondarynamenode.pid  Jetty_0_0_0_0_50090_secondary____y6aanv  
  9. hadoop-shen-tasktracker.pid  
  10. [root@localhost tmp]# rm -rf *  


二.对占用的端口进行释放

[plain] view plaincopy
  1. [shen@localhost hadoop]$ lsof -i:9000  
  2. [shen@localhost hadoop]$ lsof -i:50070  
  3. [shen@localhost hadoop]$ lsof -i:50030  
  4. [shen@localhost hadoop]$ lsof -i:50075  
  5. [shen@localhost hadoop]$ lsof -i:50060  
  6. COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME  
  7. java    4280 shen   79u  IPv6  51108      0t0  TCP *:50060 (LISTEN)  
  8. [shen@localhost hadoop]$ kill 4280  
  9. [shen@localhost hadoop]$ lsof -i:50020  
  10. [shen@localhost hadoop]$ lsof -i:50010  

如上图,就是因为50060端口被占用,所以无法启动TaskTracker,kill后一切正常
[plain] view plaincopy
  1. [shen@localhost hadoop]$ jps  
  2. 13510 DataNode  
  3. 13656 SecondaryNameNode  
  4. 13918 TaskTracker  
  5. 13750 JobTracker  
  6. 13362 NameNode  
  7. 13994 Jps  

看到这个这是无比激动啊!
附端口说明:
默认端口    设置位置      
                                                                                           描述信息 9000          namenode                                                                                               交互端口 8020          namenode                                                                                               RPC交互端口
8021          JT RPC                                                                                                   交互端口
50030        mapred.job.tracker.http.address JobTracker administrative web GUI     JOBTRACKER的HTTP服务器和端口
50070        dfs.http.address NameNode administrative web GUI                              NAMENODE的HTTP服务器和端口
50010        dfs.datanode.address DataNode control port                                          DATANODE控制端口,主要用于DATANODE初始化时向NAMENODE提出注册和应答请求
50020        dfs.datanode.ipc.address DataNode IPC port, used for block transfer    DATANODE的RPC服务器地址和端口
50060        mapred.task.tracker.http.address Per TaskTracker web interface           TASKTRACKER的HTTP服务器和端口
50075        dfs.datanode.http.address Per DataNode web interface                          DATANODE的HTTP服务器和端口
50090        dfs.secondary.http.address Per secondary NameNode web interface     辅助DATANODE的HTTP服务器和端口

三.对namenode进行格式化

如果有修改过namenode dir 位置,需要确保位置不存在,并对/tmp目录下文件进行删除,不然会总是Format abort


相关内容

    暂无相关文章