HDFS的API操作

1:在Windows下配置Hadoop的运行环境
    第一步:将hadoop2.7.5文件夹拷贝到一个没有中文没有空格的路径下面
    第二步:在windows上面配置hadoop的环境变量: HADOOP_HOME,并将%HADOOP_HOME%\bin添加到path中
    第三步:把hadoop2.7.5文件夹中bin目录下的hadoop.dll文件放到系统盘:C:\Windows\System32 目录
    第四步:关闭windows重启
 
2:获取FileSystem的方式
    @Test
    public void getFileSystem2() throws Exception{
        FileSystem fileSystem = FileSystem.get(new URI(" hdfs://node01:8020"),
        new Configuration()); //new Configuration()该对象会自动读取haoop的xml配置文件
        System.out.println("fileSystem:"+fileSystem);
    }
 
3:HDFS的API操作
    /*
      创建文件夹和文件
    */
    @Test
    public void mkdirs() throws Exception{
        FileSystem fileSystem = FileSystem.get(new URI(" hdfs://node01:8020"),new Configuration());
        //boolean mkdirs = fileSystem.mkdirs(new Path("/hello/mydir/test")); //递归创建文件夹
         /*
           1:如果父目录不存在,则会自动创建
           2:创建文件时,文件所属用户是你windows下的用户
         */
        boolean mkdirs = fileSystem.create(new Path("/hello/mydir/test"));
        fileSystem.close();
    }
 
4:HDFS文件流的获取
    //获取hdfs文件的输入流--->读取hdfs文件--->下载
    FSDataInputStream inputStream = fileSystem.open(new Path("/a.txt"));
    //获取hdfs文件的输出流--->向hdfs文件写数据
    FSDataOutputStream outputStream = fileSystem.create(new Path("/a.txt"));
 
 
    //文件上传:
    fileSystem.copyFromLocalFile(new Path(" D://set.xml"), new Path("/"));
    //文件下载:
    fileSystem.copyToLocalFile(new Path("/a.txt"), new Path(" D://a4.txt"));
 
5:HDFS的权限问题
  1:如果要让hdfs的权限生效,则需要修改hdfs-site.xml文件,修改如下:
    <property>
            <name>dfs.permissions</name>
            <value>true</value>
    </property>
  2:伪造用户:以某一个用户的身份去访问     //过滤器 Filter
      //最后一个参数root,就是以root身份去访问
      FileSystem fileSystem = FileSystem.get(new URI(" hdfs://node01:8020"), new Configuration(),"root");
 
6:HDFS的高可用(HA)
   1:HDFS高可用是有2个namenode,一个是Active状态,一个是Standby状态
   2:Zookeeper用来解决两个namenode的单点故障问题,Journal Node用来保证两个namenode元数据的同步
 
7:MapReduce的思想
  MpReduce运行在yarn之上
  阶段划分:
      Map阶段: 负责将一个大的任务划分成小的任务,小任务之间不能有依赖关系
      Reduce阶段: 负责将Map阶段的结果进行汇总
 
 
8:MapReduce的步骤
    Map阶段2个步骤
        1. 设置 InputFormat 类, 将数据切分为 Key-Value(K1和V1) 对, 输入到第二步
        2. 自定义 Map 逻辑(自己写代码), 将第一步的结果转换成另外的 Key-Value(K2和V2) 对, 输出结果
    Shuffle 阶段 4 个步骤
        3. 分区(Partition)
        4. 排序(Sort)
        5. 规约(Combiner)
        6. 分组(Group By)    ETL
    Reduce阶段2个步骤
        7. 自定义Reduce逻辑(自己写代码)将新的K2和V2转为新的 Key-Value(K3和V3)输出
        8. 设置 OutputFormat 处理并保存 Reduce 输出的K3和V3 数据

猜你喜欢

转载自www.cnblogs.com/xiaobinggun/p/11595187.html