hadoop的初识(一)

最近都在谈论大数据,也看到大数据的工资普遍比较高,对于程序员的我,肯定有着非常大的诱惑。最近也在思考自己将来的道路,因为大数据是未来的一个趋势,正如人工智能是未来的一个趋势一样,但是我了解到人工智能对于能力要求,还是非常高的,而且等人工智能落地也还要几年的时间,对于个人的精力,个人的情况来看,学习大数据比较好一些。
学习大数据,网络上的普遍推荐第一个框架是学习hadoop,那么我也就跟着网络上的路线开始学习,我记录下我学习大数据的一些心得。
首先需要回单什么是大数据,如果从字面上的来看,就是海量的数据,从事程序开发的人都知道,一旦当数据量大了之后,处理难度将非常之难,比如mysql一张表存一百万条的记录,单表还能够支撑,但是一旦数据有了好百万条,甚至更多的时候,要想查询高效,就必须要使用一些手段例如分库分表这种。这是我们程序上面认知到的,但是大数据处理可能就要上一个台阶了。
大数据有四个特性,分别是:海量的数据规模(Volumn),数据类型繁多(Variety),数据流转速度极快(Velocity)以及价值密度较低(Value)。需要处理海量的数据,普通的手段很难达到处理效率,那么大数据的一些框架就出现了,其中重要的一个是hadoop,这个是一个分布式文件系统
hadoop的中文文档:http://hadoop.apache.org/docs/r1.0.4/cn/quickstart.html
学习一个框架的时候,必须先看完它的文档,也一定要看官方文档,英语不好的,谷歌翻译转化成中文去看,文档将是最好的布道者(一般好的框架都是这样的)。
我理解的hadoop分两个部分一个是计算,一个是存储。
分布式文件系统,既然是分布式,就是说或将数据散列到非常多的服务器上,并且也会有一定的冗余,会有一个处理中心。这个时候其中的hadoop组件和清晰,NameNode和DataNode,NameNode是管理地址和分配数据到那个节点的任务,且将数据备份到不同节点,DataNode是数据存储。
注意特性:1.NameNode不存储数据,仅存储一些地址,数据也不流入到NameNode中,客户端存储时,询问要存储到哪里,NameNode会返回地址,然后在存储到DataNode中
2.DataNode默认备份是3份,两份本机DataNode上,一份会存储到另个DataNode节点上。
3.数据存储时以块的形式存储,以便解决太分散的数据,客户端会将数据存储一个缓存中,但缓存的数据达到了存储一个数据块的大小,NameNode就指定将数据存储到DataNode中。在存储过程中,会将这一块数据放入到DataNode中,然后在继续流入到另一个DataNode中。

Java api

引入jar包

<dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-client</artifactId>
      <version>3.1.1</version>
    </dependency>

操作都在FileSystem内,创建

    Configuration conf = new Configuration();
    conf.set("fs.defaultFS", "hdfs://192.168.146.128:9000");
    FileSystem fs = FileSystem.get(conf);

1、创建文件,并写入数据

    Path path = new Path(dst);
    FSDataOutputStream outputStream = fs.create(path);
    outputStream.write(content);
    outputStream.close();
    fs.close();

2、文件删除

 Path path = new Path(dst);
 fs.delete(path,true);// 为true时,允许删除一个非空的文件。为false时,只能删除一个为空的目录

3、public boolean mkdirs(Path f) throws IOException
一次性新建所有目录(包括父目录), f是完整的目录路径。

4、public boolean copyFromLocal(Path src, Path dst) throws IOException
将本地文件拷贝到文件系统

5、public boolean exists(Path f) throws IOException
检查文件或目录是否存在

猜你喜欢

转载自blog.csdn.net/qq_17842663/article/details/84894479