hadoop—视频笔记

本文深入介绍了Hadoop的核心组件,包括HDFS的存储机制、MapReduce的数据处理方式及YARN资源调度系统。阐述了Hadoop如何解决海量数据存储与分析问题,并详细解析了HDFS架构及其元数据管理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、hadoop要解决的问题(核心):

a)海量数据的存储:HDFS(海量分布式文件存储系统,老大:namenode,老二:datanode)。

b)海量数据的分析:MapReduce(离线数据处理,计算模型(并行计算框架))。

c)YARN(资源管理调度系统)(老大:resourcemanager,老二:Nodemanager)。

2、hadoop受Google的三篇论文启发:

GFS、MapReduce、BigTable

3、hadoop具体能干啥:

处理离线数据:日志分析。


4、HDFS的架构:

主从结构:

a)主节点:只有一个:namenode。负责:接收用户操作请求、维护文件系统的目录结构、管理文件与block之间关系,block与datanodes之间的关系。

b)从节点:有很多个:datanodes。负责:存储文件、文件被分成block存储在磁盘上、为保证数据安全,文件会有多个副本。

5、hadoop集群的物理分布:


6、单台机器(单节点)的物理结构:


7、hadoop的部署方式:

本地模式(用于调试)、伪分布式(一台机器模拟分布式)、集群模式。

8、伪分布式安装步骤:

关闭防火墙(因为多台节点之间要进行通信要占用端口,而防火墙会保护某些端口)。

修改ip(使每台机器都有固定的ip)。

修改hostname(主机名跟ip对应)。

设置ssh自动登录(安全的shell,一台机器给另一台机器发送命令)。

安装jdk。

安装hadoop。

9、主机和VMware之间通信:修改VMware网络为hostonly模式,在Windows就可以ping通虚拟机。

10、Linux相关命令:

查看防火墙状态:service iptables (防火墙)(参数:status)

修改ip: vim  /etc/sysconfig/network-scripts/ifcfg-eth0

修改主机名: vim /etc/sysconfig/network

修改dns:vim /etc/hosts

查看防火墙是不是自启动:chkconfig iptables --list 

改变系统的启动模式: vim /etc/inittab

关闭开机启动: chkconfig iptables off

查看文件内容: more filename

将java添加到环境变量: vim /etc/profie

刷新配置:source  /etc/profile

8、修改五个配置文件:

a)hadoop_dir/etc/hadoop/:

vim hadoop-env.sh(修改hadoop的环境变量,hadoop依赖jdk)

添加Java_Home

b)core-site.xml(配置文件):

<configuration>

<property>

<name>fs.defaultFS(用来指定HDFS的老大(NameNode)的地址)</name>

<value>hdfs://hostname(ip):9000</value>

</property>

<property>
<name>
hadoop.tmp.dir(用来指定hadoop运行时产生文件的存放目录)</name>
<value>
hadoop_dir/tmp</value>
</property>

</configuration>

c)hdfs-site.xml

<configuration>
<property>
<name>dfs.replication(指定hdfs保存数据副本的数量)</name>
<value>1</value>
</property>
</configuration>

d)mapred-site.xml:

<configuration>
<property>
<name>mapreduce.framework.name(告诉hadoop以后mr运行在yarn上)</name>
<value>yarn</value>
</property>
</configuration>

e)yarn-site.xml:

<configuration>
<property>
<name>yarn.nodemagnager.aux-services(以后nodemaganer获取数据的方式是shuffle的方式)</name>
<value>mapreduce_shuffle</value>
</property>

<property>
<name>yarn.
resourcemanager.hostname指定yarn的老大resourcemanager的地址:主机名+ip)</name>
<value>
(主机名)</value>
</property>

</configuration>

9,、需要将hadoop添加到环境变量中:vim  /etc/profile

10、初始化文件系统HDFS(格式化文件系统)

使用  hadoop_dir/bin/里的 hadoop脚本:

hadoop nomenode -format

自动在hadoop_dir目录里生成tmp目录

10、启动hdfs和yarn:

脚本:hadoop_dir/sbin/:

./start_all.sh(过时了,可以分别启动:hdfs和yarn)

11、查看是否启动成功:

Java_dir/bin目录里的:jps命令

12、可以通过浏览器的方式验证:

http://192.168.8.88:50070(hdfs的管理界面)

http://192.168.8.88:8088(yarn的管理界面)

13、可以通过设置Windows的host,在hdfs的管理界面打开browser filesystem

14、上传本地文件到hdfs:

hadoop fs -put (本地文件) hdfs://hostname:9000/(dir)

15、从hdfs下载文件到本地:

hadoop fs -get hdfs://host_name:9000(namenode的地址)/dir  /本地dir

(也可以在Windows的hdfs管理页面上下载)

16、测试MR和YARN

进入hadoop_dir/share/hadoop/mapreduce/

这里面有很多jar包,其中有hadoop官网给的用于测试MR的例子jar

运行:

  hadoop jar 例子.jar wordcount(例子.jar里的参数)hdfs://home_dir:9000/input_dir(jar的输入,放在hdfs上)  hdfs://home_dir:9000/output_dir(jar的输出,放在hdfs上)

17、停止hadoop:

进入hadoop_dir/sbin/

运行:stop-all.sh

18、ssh:secure shell

19、在Windows上再创建一个虚拟机,并且设置ip为198.126.8.99,设置好两个虚拟机之间,以及Windows和两个虚拟机之间都可以ping通。

20、在ip为88的虚拟机上运行:

ssh 192.168.8.99 mkdir /itcast0106

即在192.168.8.99的根目录/里创建目录itcast0106

21、ssh-keygen(生成秘钥) -t(指定加密类型) rsa(一种加密算法)

可以生成一个公钥,一个私钥

22、自己到自己免登陆:

把公钥拷贝给自己:cp id_rsa.pub(公钥) authorized_keys(已认证的钥匙:文件)

现在登陆到自己:ssh itcast01

不需要输入密码。

现在启动:./start-all.sh

不需要输入密码

总结:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

把当前的公钥发送给要免登陆的机器上。

也可以使用命令:ssh-copy-id itcast01

23、ssh的免登陆过程:


//2017/8/14

1、自己设计一个分布式文件系统:


Hadoop2中块的大小为:128M,并且写满一个块,申请一个块(这样写入和读取失败时候,可以不用全部重新写入和读取)。

分布式文件管理系统很多,hdfs是一次写入多次查询,不支持并发写情况,小文件不合适(Hadoop2可以用于小文件)。

2、查看hdfs里的文件:

输入命令:hadoop fs(回车会有很多命令选项)

3、hdfs的架构:


客户端(client)要读取数据,首先要跟namenode打交道,从namenode获取元数据(metadata)信息,namenode查询其元数据信息,而元数据信息(Name,replicas,...)保存在内存和磁盘里,元数据返回给client后,client将数据分块依次读取到datanode上,如果一个datanode的块用完了,将剩下的块读取到其它的datanode上,并且客户端知道将数据读到哪个datanode上最近(就近原则)。

4、元数据(metadata)存储细节:


namenode里有:/test/a.log这个文件,有3个它的副本,该文件被切分成了{blk_1,blk_2}两块,{blk_1:[h0,h1,h3]}:blk_1这一块儿存储在h0(ip)、h1(ip)、h3(ip)机器上。

4、namenode介绍:

整个文件系统的管理节点,维护着整个文件系统的文件目录树,文件/木的元信息和每个文件对应的数据块列表。接收用户的操作请求。

namenode里的文件包括:

fsimage文件:元数据镜像文件。存储(磁盘上)某一时段namenode内存元数据信息。(并不保证磁盘上的数据与内存上的数据同步,磁盘上保存的是内存上的一段时间的数据信息)。

edits文件:记录用户的操作,操作日志文件。

fstime文件:保存最近一次checkpoint(做还原点)的时间。

以上这些文件保存在Linux的文件系统中。

5、在hadoop_dir/tmp/dfs/目录中有三个文件:

data、name、namesecondary。

其中data保存的是datanode、name保存的是namenode,而namesecondary用于帮助namenode同步数据。

6、namenode的工作特点:

namenode始终在内存中保存metedata元数据,用于处理“读请求”。

到有“写请求”到来时,namenode会首先写editlog到磁盘,即想edits文件中写日志,成功返回后,才会修改内存,并且向客户端返回。

hadoop会维护一个fsimage文件,也就是namenode中metedata的镜像,但是fsimage不会随时与namenode内存中的metadata保持一致,而是每隔一段时间通过合并edits文件来更新内容。secondarynamenode就是用来合并fsimage和edits文件来更新namenode的metedata的。

7、secondarynamenode介绍:

secondarynamenode是HA(高可用性)的一个解决方案。但不支持热备,配置即可。

执行过程:从namenode上下载元数据信息(fsimage,edits),然后把二者合并,生成新的fsimage,在本地保存,并将其推送到namenode,替换旧的fsimage。(注意伪分布式有secondarynamenode,在hadoop1中有,而在hadoop2中没有了secondarynamenode)。

8、secondarynamenode工作流程:

a)secondary通知namenode切换edits文件。

b)secondary从namenode以http的方式获得fsimage和edits。

c)secondary将fsimage载入内存,然后开始合并edits。

d)secondary将新的fsimage发回给namenode。

e)namenode用心的fsimage替换旧的fsimage。

9、什么时候checkpoint:

a)fs.checkpoint.period指定两次checkpoint的最大时间间隔,默认3600秒,即这么长时间secondarynamenode就要下载fsimage和edits进行数据同步。

b)fs.checkpoint.size规定edits文件的最大值,一旦超过这个值则强制checkpoint,不管是否达到最大时间间隔,默认是64M。

//2017/8/16

1、datanode:

提供真实文件数据的存储服务。

将文件切分成块:是最基本的存储单位。对于文件内容而言,一个文件的长度大小是size,那么从文件的0便宜开始,按照固定的大小,顺序对文件进行划分并编号,划分好的每一个块称一个Block。HDFS默认的block大小是128MB,以一个256MB文件,共有256/128=2个block。

不同于普通文件系统的是,HDFS中,如果一个文件小于一个数据块的大小,并不占用整个数据块存储空间。

replication。多副本,默认是三个。

2、Hadoop——namenode——心跳机制。

//2017/8/19

1、06HadoopRPC讲的Java实现RPC。

用eclipse写一个server和一个client,就可以通信。

把client放在虚拟机Linux系统里,server在Windows里,也可以正常通信。

2、07HDFS读取数据过程:

源码解释如何读取数据。

//2017/9/28

1、

05MR_例子1

Linux下安装eclipse:eclipse-jee-kepler-sr2-linux-gtk.tar.gz

maven项目——公司里大型开发用的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值