Hadoop学习

1.  JobConf对象指定了作业执行规范。我们可以用它来控制整个作业的运行。在Hadoop集群上运行这个作业时,我们需要将代码打包成一个Jar文件(Hadoop会在集群上分发这个文件)。我们无需制定jar文件的名称,而只需在JonConf的构造函数中传递一个类,Hadoop将通过查找包含该类的jar文件进而找到相关的jar文件。

2. Hadoop将MapReduce的输入数据划分成等长的小数据块,称为输入分片。Hadoop为每个分片构建一个map任务,并由该任务来运行用户定义的map函数从而处理分片中的每条记录。对于大多数作业来说,一个合理的分片大小趋向于HDFS的一个块的大小,默认64M,不过可以针对集群调整这个默认值,在新建所有文件或新建每个文件时具体指定即可。

HDFS:

1. 管理网络中跨多台计算机存储的文件系统称为分布式文件系统。该系统架构与网络之上势必会引入网络编程的复杂性,因此分布式文件系统比普通磁盘文件系统更为复杂。

2. 数据块: 与其它文件系统不同的是HDFS中小于一个快大小的文件不会占据整个块的大小。

                  HDFS的块大小一般比较大:可以减小磁盘寻找开始位置的时间占整个过程的时间。  但不能过大,因为MapReduce中的map任务通常一次处理一个块中的数据,因此如果 

          任务数太少,作业的运行速度就会比较慢。

     使用数据块抽象的好处:a.一个文件的大小可以大于网络中任意一个磁盘的容量。   b. 块适合用于数据备份进而提供数据容错能力。

3. namenode: 管理文件系统的命名空间。它维护着文件系统树及整颗树内所有的文件和目录。这些信息以两个文件形式永久保存在本地磁盘文件上:命名空间镜像文件和编辑日志文件。   namenode也记录着每个文件中各个块所在的数据节点信息,但它并不永久保存块的位置信息,因为这些信息会在系统启动时由数据节点重建。

     如果namenode服务器毁坏,文件系统上所有的文件将会丢失,因为不知道如何根据datanode的块来重建文件。因此对namenode的容错非常重要,hadoop提供了两种机制:

          a. 备份组成文件系统元数据持久状态的文件。  这些操作是实时同步的,是原子操作。一般的配置是:将持久状态写入本地磁盘的同时,写入一个远程挂载的网络文件系统。

          b. 辅助namenode,但它不能被用作namenode。 这个辅助namenode的重要作用是定期通过编辑日志文件合并命名空间镜像,以防止编辑日志文件过大。它会保存合并后的命名空间镜像的副本,并在namenode发生故障时启用。但是,辅助namenode保存的状态总是滞后于主节点,所以在主节点全部失效时,难免会丢失部分数据。在这种情况下,一般把存储在NFS上的namenode上的namenode元数据复制到辅助namenode并作为新的namenode运行。

4. fs.default.name: 文件系统是指由URI指定的,这里我们设置

5.

posted @ 2014-10-20 19:03  cjt1991  阅读(109)  评论(0)    收藏  举报