200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > hadoop历史背景hdfs分布式文件系统hadoop的集群模式单机模式伪分布

hadoop历史背景hdfs分布式文件系统hadoop的集群模式单机模式伪分布

时间:2022-08-24 15:30:42

相关推荐

hadoop历史背景hdfs分布式文件系统hadoop的集群模式单机模式伪分布

hadoop历史背景&hdfs分布式文件系统&hadoop的集群模式&单机模式&伪分布

1、hadoop的历史背景

lucense ---->nutch---->hadoop

hadoop的思想来源:google的三大论文(GFS、mapreduce、bigtable)

hadoop的分为6块:

1、Hadoop Common: The common utilities that support the other Hadoop modules.2、Hadoop Distributed File System (HDFS™): A distributed file system that provides high-throughput access to application data.3、Hadoop YARN: A framework for job scheduling and cluster resource management.4、Hadoop MapReduce: A YARN-based system for parallel processing of large data sets.5、Hadoop Ozone: An object store for Hadoop.6、Hadoop Submarine: A machine learning engine for Hadoop

Related projects:

Other Hadoop-related projects at Apache include:1、Ambari™: A web-based tool for provisioning, managing, and monitoring Apache Hadoop clusters which includes support for Hadoop HDFS, Hadoop MapReduce, Hive, HCatalog, HBase, ZooKeeper, Oozie, Pig and Sqoop. Ambari also provides a dashboard for viewing cluster health such as heatmaps and ability to view MapReduce, Pig and Hive applications visually alongwith features to diagnose their performance characteristics in a user-friendly manner.2、Avro™: A data serialization system.3、Cassandra™: A scalable multi-master database with no single points of failure.4、、Chukwa™: A data collection system for managing large distributed systems.5、HBase™: A scalable, distributed database that supports structured data storage for large tables.6、Hive™: A data warehouse infrastructure that provides data summarization and ad hoc querying.Mahout™: A Scalable machine learning and data mining library.7、Pig™: A high-level data-flow language and execution framework for parallel computation.8、Spark™: A fast and general compute engine for Hadoop data. Spark provides a simple and expressive programming model that supports a wide range of applications, including ETL, machine learning, stream processing, and graph computation.9、Tez™: A generalized data-flow programming framework, built on Hadoop YARN, which provides a powerful and flexible engine to execute an arbitrary DAG of tasks to process data for both batch and interactive use-cases. Tez is being adopted by Hive™, Pig™ and other frameworks in the Hadoop ecosystem, and also by other commercial software (e.g. ETL tools), to replace Hadoop™ MapReduce as the underlying execution engine.10、ZooKeeper™: A high-performance coordination service for distributed applications.

hadoop的版本:

Hadoop三大发行版本:Apache、Cloudera、Hortonworksapache hadoop:开源免费hdp:hortworks公司研发cdh:Clodera公司研发(常用)mapR:星环;

hadoop的定义:

The Apache™ Hadoop® project develops open-source software for reliable, scalable, distributed computing.The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models. It is designed to scale up from single servers to thousands of machines, each offering local computation and storage. Rather than rely on hardware to deliver high-availability, the library itself is designed to detect and handle failures at the application layer, so delivering a highly-available service on top of a cluster of computers, each of which may be prone(倾向于) to failures.

2 、hdfs分布式文件系统

[外链图片转存失败(img-Q92pJlFY-1568856741784)(C:\Users\12847\Desktop\NOTES\Apart03Hadoop\img\hdfsarchitecture.png)]

2.1、hdfs架构:
主从架构:主:namenode 从:datanodes

1、namenode:a master server that manages the file system namespace and regulates access to files by clients;j接受io请求;管理元数据;管理datanode(Block ops);

管理HDFS的命名空间

配置副本本策略

管理数据块映射信息(存储一些块信息)

处理客户端的读写操作

NameNode就是维护着HDFS的目录树结构,NameNode(基于内内存),不会和磁盘发生交互操作,只在内 存中完成

每次Namenode启动都会加载metadata信息到内存中以便提供访问操作

NameNode中会存储着metadata有 文件权限,所属人,文件大小 ,时间,Block列表信息, Block的偏移量,位 置信息

因为NameNode为了方便操作提高效率.NameNode是基于内存的,所以会出现一个通病"掉电易失"

Namenode会记录client对Datanode的操作信息和Datanode中快信息,如果"掉电易失",无法完成对当前 信息的记录工作了–解决方法:SecondaryNameNode --> 帮组NameNode做磁盘操作

存储在次磁盘中东西

metadata存储早磁盘中名字是"fsimage" 对Datanode进行擦做,增删改查操作以日志的形式记录 edits(edit log对DataNode操作日志)

2、datanode: usually one per node in the cluster, which manage storage attached to the nodes that they run on。小弟角色,

The DataNodes are responsible for serving read and write requests from the file system’s clients. The DataNodes also perform block creation, deletion, and replication upon instruction from the NameNode.负责client端的读写请求

是slaveNamoNode下达的命令,DataNode来进行实际的执行操作(即具体文件数据的存储) Hadoop 2.x 版本 --> 存储文件块信息都是128MB

1.存储实际的数据块

2.执行数据块的读写操作

dataNode就是Block真正存储的地方,DataNode就是就是一个本地磁盘以文件形式存储了Block块的信 息,同时还存储Block的原数据信息文件

HDFS启动的时候 DataNode会想NameNode汇报Block块信息

DataNode通过向NameNode发送心跳信息与其保持联系(3秒),如果NameNode10分钟没有收到 DataNode的心跳信息,则认为当前DataNode已经宕机(lost),启动其他dataNode去复制当前宕机的 DataNode中所有块信息

[外链图片转存失败(img-1tsCLMWp-1568856741786)(C:\Users\12847\Desktop\NOTES\Apart03Hadoop\img\0829142411.png)]

3、secondName:

ps:SecondaryNameName并不是NameNode的备份 SecondaryNameNode主要是负责对NameNode中fsimage和edits文件尽心合并操作,并将合并好的文 件推还给NameNode

fsimage的产生有两种情况

第一种:当NameNode格式化成功后,并且启动成功会产生第一个fsimage文件(只产生一次)

第二种.已经存在fsimage文件并且NameNode启动的时候 会产生一个空的日志文件,Edits文件,这位文件 会记录着客户端对dataNode所有操作日志,SecondaryNameNode会对NameNode中产生fsimage和 Edits进行合并从操作,并产生新的fsimage文件推还给NameNode做备份使用

每个fsimage文件存储的都是文件系统元数据信息(文件及目录结构 组成文件的块的信息 副本数量信息),如namenode发生故障,最近的fsimage文件会被载入到内存中,用来重构元数据的最近状态,再从相关点开始向前执行edits日志文件中记录的每个事务

第一个就是间隔时间 默认时间 3600秒 SecondaryNameNode就会想Namenode发送CheckPoint请求

第二个就是当前edits文件大小达到 64MB SecondaryNameNode就会想Namenode发送CheckPoint 请求

满足一个即可

可以在hdfs-site.xml 进行修改 name --> fs.checkpooint.period --> 可以修改 默认是3600

name --> fs.checkpoint.size --> 可以修改 默认是 64

[外链图片转存失败(img-xdYpcc0r-1568856741787)(C:\Users\12847\Desktop\NOTES\Apart03Hadoop\img\0829150145.png)]

Fsimage和Edits概念

Namenode在格式化之后,会在配置的目录下产生文件

默认配置是:/opt/software/hadoop-2.7.1/data/dfs/name/current fimage_00000000000000000000 fimage_00000000000000000000.md5

edits_00000000000000000000 seen_txid

VERSION

1.Fsimage:HDFS文件系统中元数据的一个永久性的检查点(备份),启动包含了HDFS文件系统的元数据目录和文件inode的序列化信息,md5是fsimage的验证信息码

2.edits:HDFS系统对datanode的所有的增删改查操作,就是客户端对datanode的操作记录

3.seen_txid: 文件保存的一个数字,后一个edits_的数字值 4.VERSION 版本内信息号, 相当于是当前 edits和fsimage的 版本信息

metadata:描述数据(块)的数据(块的信息,创建人,路径、大小、位置…)

client:文件系统客户端

rack:机架,存放服务器

replication:副本:一个文件将会被切成多个块

block ops:老大对小弟的快操作请求

块大小:

hadoop 1.* :64M

hadoop

文件以块的形式存在,块以文件的形式存储再磁盘中。

file1.txts

4、时间同步服务器

需要搭建完全分布式 或高可用的Hadoop集群,需要有一个非常严格的要求,就是所有服务器节点的时间 要是一致的

第一种就是手动修改时间 date -s “0824 10:30:30” 第二种即是使用ntpdate命令 同不是件 ntpdate -u

第三搭建时间服务器

1.需要在每台机器上安装一个命令 ntp yum install -y ntp 2.以hadoop01服务器作为时间服务器 需要对时间服务器进行配置 配置在/etc/ntp.conf ps:如果通过vi明令发现这ntp.conf是空文件,那么在确定有ntp.conf.rpmnew文件的前提下删除当前空文件 rm -rf /etc/ntp.conf 将ntp.conf.rpmnew文件移动到当前目录下成为ntp.conf mv /etc/ntp.conf.rpmnet /etc/ntp.conf 在编辑这个即可 vi /etc/ntp.conf 在文件中第18行的位置,会出现时间同步的 范围 在配置文件语句的下面添加相同语句 restrict 10.211.55.0 mask 255.255.255.0 nomodify notrap 自己IP地址(当服务器的IP) 除了当前这个网段都不允许修改 这个0的作用代表整个IP端都能访问 10.211.55.0~255 配置文件中从 23~26行结束 所有server服务都要停止 #server 0.centos. iburst #server 1.centos. iburst #server 2.centos. iburst #server 3.centos. iburst 在这4个时间服务的前面添加# 代表被注释 不会执行 在这4个时间同步服务的下面添加 server 127.127.1.0 --- > 本地时间同步点 保存退出文件即可 需要启动NTP服务 service ntpd[start|stop|restart|status] 重启NTP服务 service ntpd restart 其他节点 可以对当前服务器进行同步时间 ps:需要关闭其他节点 ntpd服务 service ntpd stop 以后再同不时间 不链接外网的前提下 ntpdate 时间服务器的IP地址即可ps:提供一个定时器任务脚本 crontab -e 开启定 时器任务 分 小时 日 月 周 命令 */10 * * * * ntpdate 时间服务器IP地址 >> /root/ntpdate.log crontab -r 删除了 退出或停止linux,都会消失

2.2 hdfs优点:

HDFS适合大量小文件存储,适合一次写入,多次读取的场景,且不支持文件的修改(并发修改) HDFS优点:高可靠性:Hadoop存储和处理数据的能力强 高扩展性: 有效的分布数据计算,在不同节点上 高效性:动态的移动数据,可以保证各个节点之间的数据平衡高容错: Hadoop能自动保存文件副本,执行计算任务失败会自动重新分配 缺点:1.无法高效存储大量小文件(因为HDFS文件存储机制问题)(使用定时器解决)2.不支持多用户写入以及任意修改文件 3.不适合低延迟数据访问

2.3重要特性:

1、HDFS中文件在物理介质的存储方式分块(block)存储,块大小是可以配置参数进行调配的。(dfs.blocksize)hadoop2.x默认块大小是128MB hadoop1.x默认块大小是64MB 最新的hadoop3.x默 认是256MB 2、HDFS文件系统会提供给用户一个目录树结构,类似于Linux的文件系统,一切都是从根/ 节点出发的 3、维护目录树结构的一个角色 namenode(存储文件分块的信息[元数据]),namenode是HDFS集群中主节 点,(HDFS是典型的主从结构)namenode主要负责维护整个HDFS文件系统的目录接,以及每一个路径所对 应block块信息(block 的id及所在那个datanode服务器上)4、文件的Block的存储管理是由datanode节点承担,datanode是HDFS集群从节点,每一个block都可以在多 个datanode上存储(副本机制-->高容错) ps:Block副本机制:副本是可以设置dfs.replication副本的数量不要超过Datanode的数据量,HDFS系统中 默认副本数量是3个,副本相当于是对源文件的一个拷贝,这个副本的数量组成方式是:3个副本 = 1源文件+2副本 副本存储原则:一定不能让同一个datanode中出现两个相同副本 HDFS文件系统为什么是128MB大小?如果需要寻址(寻找block)块最好的时间是10ms,寻找时间期为传输时间的1%,可以达到最佳状态 10/0.01 = 1000ms --->1S ,现在无论是机械硬盘还是固态硬盘 传输速率普遍可以达到100MB/s1S*100MB/s = 100MB --这个值正好是块的大小 ,如果块设修改为大,会增加传输时间,定块太小会增加寻 址时间,所以定制在128MB是是一个中间值 最好的值.

3 hadoop的集群模式

Now you are ready to start your Hadoop cluster in one of the three supported modes:

[Local (Standalone) Mode]

运行再单个jvm中,适用于bug调试,(操作linux的本地文件或者目录)

安装过程:

[Pseudo-Distributed Mode]:将hadoop中的各个服务都运行在一台服务器,(操作hdfs文件系统中的文件或者目录)

[Fully-Distributed Mode]:将hadoop的各个服务运行在多个服务器上

4、单机模式[Local (Standalone) Mode]

4.1 目的

单机版本主要目的就是为了测试用的,不需要任何配置

4.2 安装过程

1.必须存在JDK-->hadoop2.7.1 --> JDK版本不能小于JDK1.7 2.将hadoop2.7.1.tar.gz上传到 root目录下 3.将当前压缩包解压到/opt/software tar -zxvf hadoop-2.7.1.tar.gz -C /opt/software/ 4.跳转到解压后的hadoop目录 cd /opt/software/hadoop-2.7.1/ bin: Hadoop的脚本管理目录和使用目录,这个目录是sbin目录下实现脚本的基础 etc: Hadoop配置文件所在目录 core-site.xml hdfs-site.xml mapred-site.xml 和 yran-site.xml include: 对外提供的库文件(存储着一些C++的动态链接库,为了有C++程序访问HDFS使用) lib: Hadoop环境需要使用的动态库和静态库存在位置 sbin: Hadoop集群启动和停止时需要执行脚本命令 share: hadoop各个模块编译后jar所在的位置 libexec:各个服对应的shell配置文件所在目录配置全局环境变量,为了以后方便操作hadoop vi /etc/profile 在最后添加 export HADOOP_HOME=/opt/software/hadoop-2.7.1/ export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin: 保存退出 并重新加载资源文件 source /etc/profilehadoop是java编写的,所以需要在hadoop配置java的环境变量 hadoop配置文件存在的路径 /opt/software/hadoop-2.7.1/etc/hadoop vi hadoop-env.sh 文件中配置java环境变量 大约是在底25行的位置 添加如下 exprot JAVA_HOME=/opt/software/jdk1.8.0_221演示 主要是用来测试 MapReduce程序 hadoop jar /opt/software/hadoop-2.7.1/share/hadoop/mapreduce/hadoop-mapreduceexamples-2.7.1.jar wordcount /root/input/wordCount.txt /root/output 通过hadoop命令触发 hadoop框架下 share目录下的hadoop-mapreduce-examples-2.7.1.jar 这个jar中已经完成一个程序,这个程序名字较多wordcount 通过这个程序 对我们上传文件进行分析操作 最终的到结果

##cd /opt/software/hadoop-2.7.1/-rw-r--r--. 1 10021 10021 4436 Jun 29 capacity-scheduler.xml(容器调度)-rw-r--r--. 1 10021 10021 318 Jun 29 container-executor.cfg-rw-r--r--. 1 10021 10021 774 Jun 29 core-site.xml-rw-r--r--. 1 10021 10021 3670 Jun 29 hadoop-env.cmd-rw-r--r--. 1 10021 10021 4234 Aug 28 16:59 hadoop-env.sh-rw-r--r--. 1 10021 10021 2598 Jun 29 hadoop-metrics2.properties-rw-r--r--. 1 10021 10021 2490 Jun 29 hadoop-metrics.properties-rw-r--r--. 1 10021 10021 9683 Jun 29 hadoop-policy.xml-rw-r--r--. 1 10021 10021 775 Jun 29 hdfs-site.xml-rw-r--r--. 1 10021 10021 1449 Jun 29 httpfs-env.sh-rw-r--r--. 1 10021 10021 1657 Jun 29 httpfs-log4j.properties-rw-r--r--. 1 10021 10021 21 Jun 29 httpfs-signature.secret-rw-r--r--. 1 10021 10021 620 Jun 29 httpfs-site.xml-rw-r--r--. 1 10021 10021 3518 Jun 29 kms-acls.xml-rw-r--r--. 1 10021 10021 1527 Jun 29 kms-env.sh-rw-r--r--. 1 10021 10021 1631 Jun 29 kms-log4j.properties-rw-r--r--. 1 10021 10021 5511 Jun 29 kms-site.xml-rw-r--r--. 1 10021 10021 11237 Jun 29 log4j.properties-rw-r--r--. 1 10021 10021 951 Jun 29 mapred-env.cmd-rw-r--r--. 1 10021 10021 1383 Jun 29 mapred-env.sh-rw-r--r--. 1 10021 10021 4113 Jun 29 mapred-queues.xml.template-rw-r--r--. 1 10021 10021 758 Jun 29 mapred-site.xml.template-rw-r--r--. 1 10021 10021 10 Jun 29 slaves-rw-r--r--. 1 10021 10021 2316 Jun 29 ssl-client.xml.example-rw-r--r--. 1 10021 10021 2268 Jun 29 ssl-server.xml.example-rw-r--r--. 1 10021 10021 2250 Jun 29 yarn-env.cmd-rw-r--r--. 1 10021 10021 4567 Jun 29 yarn-env.sh-rw-r--r--. 1 10021 10021 690 Jun 29 yarn-site.xml

4.3使用单机

5、伪分布

5.1 说明

在一台机器上模拟所有节点(NameNode和DataNode),根完全分布式最大的区别再去,完全分布式是将不 同节点安装在不同linux服务器 ps:开发中测试阶段,伪分布式居多(伪分布式可以完成完全分布式所有的任务),实际部署在服务器上的一 定是完全分布式(HA)

一个Hadoop集群中基本存在角色Namenode(主[大脑]),DataNode(从[身体])

5.2 设置免密登录

1、原理

ssh-keygen -t rsa 生成密钥使用的时rsa算法

ssh-copy-id localhost 执行拷贝公钥命令 localhost是需要传递公钥的主机地址

Now try logging into the machine, with "ssh 'localhost'", and check in: .ssh/authorized_keys --> 授权key 存储文件 to make sure we haven't added extra keys that you weren't expecting. 如何验证免密登录成功 --> ssh localhost localhost是需要登录主机的IP地址 切记!!!!切记!!!!切记!!!! 登录成功后 一定要退出exit不然会出现子系统在夫操作,没什么用

[外链图片转存失败(img-Z8tJGXvZ-1568856741788)(C:\Users\12847\Desktop\NOTES\Apart03Hadoop\img\0828174842.png)]

2、可能出现的问题:

1、-bash: ssh: command not found解决:下载客户端openssh2、ssh: Could not resolve hostname hadoop01: Name or service not known解决:配置映射:vi /etc/hostsip主机名

5.3配置伪分布

前提:已经完成了单机版本的,所以有些配置就不做了Ps:配置的时候一切都是以根路径为起始路径安装 jdk完成,免密完成,防火墙完成,配置hadoop全局变量已经完成,已经修改hadoop-een.sh配置文件中的JAVA_HOME的引用1.修改hadooo目录下的配置文件 core-site.xml文件 跳转到 core-site.xml存在的目录 cd /opt/software/hadoop-2.7.1/etc/hadoop/ 修改core-site.xml文件 <configuration> <property> <!-- 指定hadoop所用的系统URI和HDFS文件的老大是谁(谁是namenode) --><name>fs.defaultFS</name> <!-- 指定当前HDFS中的namenode是谁,这里如果没有配置hosts文件 那么一定要写IP 否则可以 写主机名字 --><!--9000是内部通信端口号--><value>hdfs://hadoop01:9000</value> </property></configuration>2.继续修改配置文件 hdfs-site.xml文件 <configuration> <property> <!-- 指定HDFS文件系统中副本的数量 --><name>dfs.replication</name>HDFS分布式文件系统 <!-- 具体的数量值 --><value>1</value> </property> </configuration>3.配置Datanode 修改一个文件 slaves 这个文件已经写好了localhost文件,所以不需要修改,伪分布式就是本机即是Namenode也是DataNode 也可以修改为本机的机器名称hadoop01 ps:这个hadoop01代表 是hosts文件中映射,不然话必须写IP在没有高可用(HA)的前提下,为了保证集群安全,Hadoop提供了另外一个角色 SecondaryNameNode 添加配置文件中再次修改core-site.xml文件和hdfs-site.xml文件 在core文件中添加hadoop运行时产生的存储目录文件 <!-- 配置hadoop运行时产生文件存储的目录 --> <property> <!-- 指定hadoop文件存储目录 --><name>hadoop.tmp.dir</name> <!-- 指定存储文件的位置在本地种(主机的位置) 这个目录可以不存在系统自动创建 --><value>/opt/software/hadoop-2.7.1/data</value> </property> <!--配置hdfs的web ui 监控页面--><property><name>dfs.http.address</name><value>hadoop01:50070</value></property>在hdfs文件中添加 SecondaryNameNode 配置 <property> <!-- 指定SecondaryNameNode的启动 --><name>dfs.namenode.secondary.http-address</name> <!-- 配置的启动 --><value>hadoop01:50090</value> </property>4.格式化 namenode hadoop namenode -format 格式化完成后在输出中找到 has been successfully formatted. 就格式化成5.启动Hadoop start-dfs.sh 输入 jps -->出现 NameNode DataNode SecondaryNameNode 通过网页 Linux系统的IP地址:50070 就能访问HDFS系统UI界6.关闭Hadoop服务stop-dfs.sh问题:修改了hdfs配置和 salves 任何一个 要重新格式化namenode 需要检查是否存在 hadoop-2.7.1 目录下时候已经存在了 data文件夹 要先删除文件在格式化 启动集群: start-dfs.sh --> namenode datanode secondaryNamenode 先停止集群在关机 stop-dfs.shhadoop-daemo.sh datanode start 启动单个命令hadoop-daemo.sh datanode stop 关闭单个命令如果还没有启动,看/hadoop-2.7.1/logs/看日志

sh

输入 jps -->出现

NameNode

DataNode

SecondaryNameNode

通过网页 Linux系统的IP地址:50070 就能访问HDFS系统UI界

6.关闭Hadoop服务

stop-dfs.sh

问题:

修改了hdfs配置和 salves 任何一个

要重新格式化namenode

需要检查是否存在 hadoop-2.7.1 目录下时候已经存在了 data文件夹 要先删除文件在格式化

启动集群: start-dfs.sh --> namenode datanode secondaryNamenode

先停止集群在关机 stop-dfs.sh

hadoop-daemo.sh datanode start 启动单个命令

hadoop-daemo.sh datanode stop 关闭单个命令

如果还没有启动,看/hadoop-2.7.1/logs/看日志

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。