码迷,mamicode.com
首页 > Windows程序 > 详细

HDFS的API操作

时间:2019-09-27 01:35:58      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:cep   tst   代码   分组   高可用   shuff   rmi   写代码   div   

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 数据

HDFS的API操作

标签:cep   tst   代码   分组   高可用   shuff   rmi   写代码   div   

原文地址:https://www.cnblogs.com/xiaobinggun/p/11595187.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!