深入Hadoop

1、HDFS架构、启动过程

  1)开发环境的准备

    a.安装Maven(用于管理项目依赖包)

      将apache-maven-3.0.5.tar.gz解压到/opt/models目录下

      配置/etc/profile增加MAVEN_HOME和PATH,source /etc/profile

      退出重新登录mvn -version

      创建仓库目录~/.m2

      将repository.tar.gz上传到/opt/softwares目录下

      解压到~/.m2目录下

      cp /opt/modules/apache-maven-3.0.5/conf/settings.xml .

    b.安装Eclipse

      将tools中的Eclipse压缩包解压

      打开虚拟机进入eclipse目录运行./eclipse

      配置maven为自己的maven目录

    c.配置Eclipse与Maven插件

    d.设置Linux下Eclipse快捷键

2、HDFS Java API 使用

  1)获取文件系统

    a.Configuration类  -->Configuration conf = new Configuration();

    b.FileSystem类  -->FileSystem fileSystem = FileSystem.get(conf);  return fileSystem;

  2)获取输入流

    a.定义文件名  -->String fileName = "文件路径";

    b.Path类  -->Path readPath = new Path(fileName);  获取该文件的路径

    c.FSDataInputStream inStream = fileSystem.open(readPath);  获取输入流(从文件系统中)

    d.FileInputStream inStream = new FileInputStream("文件路径");  获取本地文件输入流

  3)获取输出流

    定义文件名putFileName并获取路径writePath

    FSDataInputStream outStream = fileSystem.create(writePath);  获取输出流

  4)读和写流

    try(

      IOUtils.copyBytes(inStream,outStream,4096,false);

    }catch(Exception e){

        e.printStackTrace();

     }final{

       IOUtils.closeStream(inStream);

       IOUtils.closeStream(outStream);

      }

3、YARN架构、应用监控

  1)safemode,namenode启动后进入safemode,等待datanode发送block report,等到达到阈值0.999后过30s退出safemode

    手动进入safemode模式:bin/hdfs dfsadmin -safemode enter(leave)

4、MapReduce编程模型

  1)一种分布式计算模型,MapReduce将整个并行计算过程抽象到两个函数

    a.Map:对一些独立元素组成的列表的每一个元素进行指定的操作,可以高度并行

    b.Reduce:对一个列表元素进行合并

    c.数据的流向input-->map-->reduce-->output,以<key,value>对的形式流动

  2)

   3)MapReduce中的数据类型:  -->都要实现Writable接口,以便序列化进行传输,key要继承WritableComparable

      a.Text

      b.LongWritable

      c.IntWritable

      d.NullWritable  当key或value值为空时使用

      e.定义变量-->get,set方法-->构造方法-->重写equals,hashcode,tostring方法

        -->实现WritableComparable接口中write,readFields,compareTo方法

5、MapReduce Shuffle过程

6、集群搭建

7、集群基准测试  --》测试集群的性能

    a.吞吐量,namenode存储元数据的性能,yarn跑多个小作业时性能,

    b.监控集群  cloudera

8、使用ntp配置内网时间同步

    a.以一台机器作为时间服务器  -->rpm -qa | grep 'ntp'

      vi /etc/ntp.conf  修改三处

      vi /etc/sysconfig/ntpd  添加一行SYNC_HWCLOCK=yes

      service ntpd start

      chkconfig ntpd on

    b.其他机器定时同步  -->切换到root用户写脚本

      0-59/10 * * * * /usr/sbin/ntpdate localhost

 9、Zookeeper

10、HDFS HA    -->高可用性

    NameNode  Active

    NameNode  Standby

    核心:保证两个NameNode中的文件系统元数据同步  -->Shared Edits-->jornal node

        时刻知道DataNode的BLock Report    -->同时向两个NameNode发送报告

    client通过Proxy代理来选择Namenode,通过Zookeeper实现自动故障转移

    工作:1)Shared Edits

        2)standby Namenode

        3)proxy        

        4)两个Namenode的隔离性  -->同时只能有一个Namenode向client提供服务

            使用sshfence的方式需要配置两个namenode的无密码登录

    依赖于zookee来实现自动故障转移

       a,将namenode从standby转换为active

          选举

      b.监控    -->ZKFC(failure Contronner):是Zookeeper的一个客户端

11、中高级特性

  1)federation    -->联盟,不用应用可以使用不同的namenode进行数据管理

    多个namenode分别管理各自文件的元数据,数据都存储在所有的datanode上

  2)Snapshots    -->快照,只读的基于时间点的文件系统拷贝,只有元数据,没有数据的快照

  3)集中式缓存管理  -->允许用户将一部分目录或文件房子缓存中

  4)Distributed Copy  -->集群间的数据拷贝  bin/hadoop distcp

      不同版本间的Hadoop集群拷贝走hftp协议

12、YARN HA

    

posted @ 2017-03-21 20:36  阿杜&eason  阅读(182)  评论(0编辑  收藏  举报