Hadoop简单了解

Hadoop是一个开源、高可靠、可扩展的分布式计算框架,主要用来解决海量数据的存储(HDFS)、海量数据的分析(MapReduce)、分布式资源调度(Yarn)等。Hadoop可以用于日志分析、基于海量数据的在线应用、推荐系统、计算广告、复杂算法、网盘和搜索引擎等。Hadoop的起源是Lucence,Lucence是用java编写的,用于实现和Google类似的全文检索功能,Hadoop是2005年作为Lucence的子项目Nutch被纳入Apache基金会,目前Hadoop是实现云计算的标准开源软件。

  • Hadoop构成

Hadoop入门必须知道的简单知识
Hadoop入门知识
Hadoop构成
Hadoop由4个主要构成部分:
1) 基础核心:提供基础的通用的功能
2) HDFS:分布式存储
3) MapReduce:分布式计算
4) YARN:资源分配(多个任务是排队执行还是同时执行)

  • HDFS构成

HDFS由3种主要的节点构成:
1) NameNode 用来存储数据的存放位置等元数据(不存放数据)
2) DataNode 只用来存储数据
3) SecondaryNameNode
辅助NameNode运行,将NameNode产生的元数据持久化到磁盘上
注意:生产环境中一台计算机通常只担任一种角色。测试环境中一台计算机可以担任多种角色;如伪分布模式中担任全部角色,测试集群中也常见NameNode和Secondary NameNode在同一台计算机上。

  • NameNode

进程
对应于NameNode进程(通过jps命令可以查看java进程)。
功能
1) 存储数据的分布位置、数据的各种描述信息(如文件名、文件大小、文件所在目录、所有者名称、读写执行权限等)
2) 读数据时,要先从NameNode获取文件的分布位置(在哪些DataNode上),然后再从DataNode上读数据(当然,这个过程已经由HDFS的Shell或API实现了)
3) 写数据时,先向NameNode提交要写的文件的信息,NameNode检查自己的记录表,以找到合适的DataNode(需要找多个,因为每个文件还要创建副本)来存储这些数据,然后指挥这些DataNode串成一串接收数据。如果某个DataNode在接收数据时罢工,则忽略掉它(忽略之后造成的副本数少于指定数量会在后期补加副本);如果所有选出的DataNode全挂掉(几率很低),则写入失败。
4) 需要时,可以调用NameNode列出HDFS中的文件夹及文件(如执行 hdfs dfs -ls / 命令时)。

元数据存储位置
具体存储位置由配置文件指定,即hdfs-site.xml中的 dfs.namenode.name.dir 指定,这个位置可以用,列表指定多个位置进行扩容

dfs.namenode.name.dir的默认值是file://${hadoop.tmp.dir}/dfs/name
${hadoop.tmp.dir}的默认值是 /tmp/hadoop-${user.name}
${user.name}是安装Hadoop的用户名

这些默认值在Hadoop官方网站的文档中有详细说明
配置时,为了简单,通常会在core-site.xml中修改 ${hadoop.tmp.dir},因为这个值在各个具体配置文件中被多次引用!
通过Hadoop的浏览站点也能找到NameNode元数据的存储位置,在Overview页上

猜你喜欢

转载自blog.csdn.net/m0_37664906/article/details/80785026