3、流式数据访问,一次写入多次读写,这种模式跟传统文件不同,它不支持动态改变文件内容,而是要求让文件一次写入就不做变化,要变化也只能在文件末添加内容 。
4、廉价硬件,HDFS可以应用在普通PC机上,这种机制能够让给一些公司用几十台廉价的计算机就可以撑起一个大数据集群 。
5、硬件故障,HDFS认为所有计算机都可能会出问题,为了防止某个主机失效读取不到该主机的块文件,它将同一个文件块副本分配到其它某几个主机上,如果其中一台主机失效,可以迅速找另一块副本取文件 。
HDFS的关键元素:
Block:将一个文件进行分块,通常是64M 。
NameNode:保存整个文件系统的目录信息、文件信息及分块信息,这是由唯一一台主机专门保存,当然这台主机如果出错,NameNode就失效了 。在Hadoop2.*开始支持activity-standy模式----如果主NameNode失效,启动备用主机运行NameNode 。
DataNode:分布在廉价的计算机上,用于存储Block块文件 。

文章插图
MapReduce
通俗说MapReduce是一套从海量·源数据提取分析元素最后返回结果集的编程模型,将文件分布式存储到硬盘是第一步,而从海量数据中提取分析我们需要的内容就是MapReduce做的事了 。
下面以一个计算海量数据最大值为例:一个银行有上亿储户,银行希望找到存储金额最高的金额是多少,按照传统的计算方式,我们会这样:
JAVA代码
Long moneys[] ...
Long max = 0L;
for(int i=0;i<moneys.length;i++){
if(moneys[i]>max){
max = moneys[i];
}
}
如果计算的数组长度少的话,这样实现是不会有问题的,还是面对海量数据的时候就会有问题 。
MapReduce会这样做:首先数字是分布存储在不同块中的,以某几个块为一个Map,计算出Map中最大的值,然后将每个Map中的最大值做Reduce操作,Reduce再取最大值给用户 。

文章插图
MapReduce的基本原理就是:将大的数据分析分成小块逐个分析,最后再将提取出来的数据汇总分析,最终获得我们想要的内容 。当然怎么分块分析,怎么做Reduce操作非常复杂,Hadoop已经提供了数据分析的实现,我们只需要编写简单的需求命令即可达成我们想要的数据 。
总结
总的来说Hadoop适合应用于大数据存储和大数据分析的应用,适合于服务器几千台到几万台的集群运行,支持PB级的存储容量 。
Hadoop典型应用有:搜索、日志处理、推荐系统、数据分析、视频图像分析、数据保存等 。
但要知道,Hadoop的使用范围远小于SQL或Python之类的脚本语言,所以不要盲目使用Hadoop,看完这篇试读文章,我知道Hadoop不适用于我们的项目 。不过Hadoop作为大数据的热门词,我觉得一个狂热的编程爱好者值得去学习了解,或许你下一个归宿就需要Hadoop人才,不是吗 。
3、下载&安装
Hadoop基于Java的,因此,必须先装JDK,如何安装,自行查找教程 。
1)下载
http://hadoop.Apache.org/ hadoop官网

文章插图
点击download找到最新版软件进行下载:https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.1.2/hadoop-3.1.2.tar.gz
上面的连接可能版本不全,最全的版本在这https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/,清华大学的下载源 。
选择镜像站点进行下载,大概300多M这样 。

文章插图
解压到某一路径,不含中文以及特殊符号:如 D:1_Program_File,解压过程可能报某些错:

文章插图
无视之 。
三、配置环境变量
添加HADOOP_HOME配置:自己安装hadoop路径,我的是D:hadoop-3.0.3
在Path中添加如下:自己安装hadoop路径/bin,如:D:/hadoop-3.0.3/bin
四、hadoop需要jdk支持,jdk路径不能有空格,如有空格,可以这样,如:”D:Program Files"Javajdk1.8.0_25
五、hadoop路径下创建data用于数据存储,再在data下创建datanode目录和namenode目录
六、hadoop配置
四个hadoop路径/etc/hadoop/core-site.xml,etc/hadoop/mapred-site.xml,etc/hadoop/hdfs-site.xml,etc/hadoop/yarn-site.xml
1.core-site.xml
<configuration><property><name>fs.default.name</name><value>hdfs://localhost:9000</value></property> </configuration>myeclipse上配置hadoop时,localhost需写成自己的IP
推荐阅读
- 梦见儿子被水淹了 梦到儿子被水淹了被吓醒了解梦
- 华为手机用久了发烫、发热?三个原因需了解,及时降温很必要
- 你了解饮茶也有很多禁忌吗
- 吃药的时候是否能喝茶 我们都需了解
- 北方销区的群众了解【中国绿茶】究竟有多少种吗_
- 什么是绿茶_一文读懂
- 喝过很多茶 常见的喝茶误区你了解吗
- 从古籍中了解古人是如何养生的
- 蜂蜜容易变质么?这些是你应该了解的
- 5G普及进行时!这些超值5G新机不了解一下?
