掌握大数据--Hadoop全面指南

2024-01-09 18:24:26

在讲Hadoop之前我们需要知道一个问题:为什么我们学习大数据要学习Hadoop

不卖关子 原因如下:

1. 分布式存储:Hadoop提供了分布式存储系统,最著名的是Hadoop Distributed File System(HDFS)。这使得大规模数据能够分布式存储在集群中,提高了数据的容错性和可靠性。

2. 分布式计算:?Hadoop的核心组件之一是MapReduce,它是一种分布式计算模型。通过MapReduce,可以对大规模数据进行并行处理,从而加速计算过程,特别是对于需要处理海量数据的任务。

3. 扩展性:?Hadoop是一个高度可扩展的系统,能够容纳成百上千台服务器。这意味着随着数据规模的增加,可以简单地通过添加更多的计算节点来提高系统的性能。

4. 容错性:?Hadoop具有强大的容错机制。在一个大规模的集群中,由于硬件故障等原因,节点可能会失败。Hadoop能够自动检测故障,并在其他节点上重新执行任务,保障数据的完整性。

5. 开源生态系统:Hadoop是一个开源项目,具有庞大的社区支持。它的生态系统包括了许多相关工具和框架,如Hive(数据仓库)、Pig(数据流编程)、HBase(分布式数据库)等,为大数据处理提供了全面的解决方案。

6. 行业标准:?Hadoop已经成为处理大数据的事实标准。许多大型企业和组织都在使用Hadoop来存储和分析海量数据。因此,学习Hadoop使你更容易适应和贡献于大数据领域。

那我们便正式开始学习Hadoop

1.分布式和集群介绍

  • 分布式: 多台机器做不同的事情, 然后组成1个整体.

  • 集群: 多台机器做相同的事情.

  • 多台机器既可以组成 中心化模式(主从模式), 也可以组成 去中心化模式(主备模式)

  • 我们用比较生动的语言描述一下让大家更好理解 我们先想象一个饭店

  • 单机模式就是一个人买菜切菜炒菜,但是一个人做所有事压力太大,很容易倒下,如果这个人倒下了那么饭店就停业。

  • 分布式就相当于三个人,一个负责买菜一个负责洗菜切菜另一个负责炒菜。分工均匀,不会让人太累。但是如果任何一个人出了问题,那么饭店也是无法营业的。

  • 集群就相当于三个人,每一个人都负责买菜 洗菜 切菜 炒菜 这样任何一个人出现问题,饭店也可以正常营业。

  • 分布式集群就相当于饭店很大有很多人,几个人负责买菜,几个人负责切菜洗菜,几个人负责炒菜。任何人出了问题都不会影响饭店营业

2.Hadoop框架国内外应用

  • 国外

    • Yahoo雅虎, 节点4.2W+, 超10W核, 总存储350PB+, 每月提交作业 1000W+

  • 国内

    • 阿里巴巴, 节点3000+, 超4W核心, 内存超100TB, 每月提交作业 450W+

  • Hadoop的组成

    • HDFS: 分布式存储框架

    • MapReduce: 分布式计算框架

    • Yarn: 任务接收和调度器

3. Hadoop的架构图

Hadoop1.X架构

HDFS: Hadoop Distributed FileSystem分布式文件存储系统

namenode: 主节点

1.管理整个HDFS集群

2.维护和管理元数据
问:什么是元数据(metadata)?答:描述数据的数据就被称之为: 元数据例如: 图书在哪层,哪个区域,哪个书架.

文件的存储路径,大小,时间,权限.

SecondaryNameNode: 辅助节点辅助namenode管理元数据的

datanode: 从节点
1.维护和管理源文件
2.负责数据的读,写操作
3.定时向namenode报活

JobTracker: 主节点

1.负责任务的接收

2.负责任务的调度

3.负责任务的监控

4.负责资源的调度和分配.

TaskTracker:从节点负贡接收并执行JobTracker分配过来的计算任务

JobTracker的任务过于繁重,容易宕机,存在: 单点故障的问题

Hadoop2.X, 3.X 架构= HDFS + MapReduce + Yarn

HDFS集群与Hadoop 1 没有不同,不同的是另一边?Hadoop2/3没有MapReduce集群的概念

Hadoop集群高可用模式

重点来了Hadoop集群高可用模式

4.Hadoop集群环境初体验

  • 搭建方式

    • 方式1: Standalone mode 单机模式

      把所有的服务(namenode, SecondaryNameNode, datanode, ResourceManager, nodemanager)装到1台机器, 适用于: 学习, 调试.

    • 方式2: Cluster mode 集群模式

      node1: namenode, datanode, ResourceManager, nodemanager

      node2: SecondaryNameNode, datanode, nodemanager

      node3: datanode nodemanager

Hadoop集群环境搭建我们后面在将这里就不做冗余阐述。

  1. 在node1中执行 start-all.sh 命令, 即可启动Hadoop集群.

  2. 然后在node1中单独运行 mapred --daemon start historyserver 启动历史服务.

  3. 然后在三台虚拟机中分别输入 jps 查看服务

  4. 之后就可以在浏览器中输入如下的的端口号进行访问了.

    HDFS的WebUI界面: ip:9870 细节: 如果是Hadoop2.X, 端口号是: 50070

    Yarn的WebUI界面: ip:8088, 只记录本次启动Hadoop集群至关闭, 所有的计算任务.

    历史服务的WebUI界面: ip:19888, 记录Hadoop从搭建好至现在, 所有的计算任务.

5.Hadoop之MapReduce初体验

Hadoop框架提供了MapReduce的测试包, 具体如下

如何使用上述的测试包, 计算圆周率:
?

# 建议cd先进入到Hadoop提供的MR的测试包所在的路径下:
cd /export/server/hadoop/share/hadoop/mapreduce

# 执行MR包(MR任务的)格式:?? ? ? ? ? ? ? ? ? ??
yarn jar hadoop-mapreduce-examples-3.3.0.jar pi 2 50

# 上述格式解释:
yarn jar?? ??? ??? ??? ??? ??? ??? ??? ?固定格式, 说明要把某个jar包交给yarn调度执行.
hadoop-mapreduce-examples-3.3.0.jar?? ??? ?Hadoop提供的MR任务的测试包
pi?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?要执行的任务名
2?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?表示MapTask的任务数, 即: 几个线程来做这个事儿.
50?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?投点数, 越大, 计算结果越精准.

如何使用上述的测试包, 计算: 单词的次数

# 建议cd先进入到Hadoop提供的MR的测试包所在的路径下:
cd /export/server/hadoop/share/hadoop/mapreduce

# 执行MR包(MR任务的)格式:	                 
yarn jar hadoop-mapreduce-examples-3.3.0.jar wordcount 数据源文件路径 目的地目录路径

# 上述格式解释:
数据源文件路径		# 必须是HDFS的文件路径, 即: 要进行单词统计的文件(绝对)路径
目的地目录路径		# 必须是HDFS的目录路径, 且该目录必须不存在, 因为MR结果是 覆盖写入.

# 细节: HDFS只支持 绝对路径, 不支持相对路径, 且HDFS的路径和Linux一样, 都是 /开头的. 

# 示例
yarn jar hadoop-mapreduce-examples-3.3.0.jar wordcount hdfs://node1:8020/input/word.txt hdfs://node1:8020/output
 
# 上述的 hdfs://node1:8020/ 是完整写法, 8020是HDFS的客户端地址, 可以简写为: 
yarn jar hadoop-mapreduce-examples-3.3.0.jar wordcount /input/word.txt /output

6.HDFS的特点

  • HDFS文件系统可存储超大文件,时效性稍差。

  • HDFS具有硬件故障检测和自动快速恢复功能。

  • HDFS为数据存储提供很强的扩展能力。

  • HDFS存储一般为一次写入,多次读取,只支持追加写入,不支持随机修改。

  • HDFS可在普通廉价的机器上运行。

7.HDFS的架构图

心跳机制:
1.datanode会定时(3秒)向namenode发送心跳包,告诉namenode,我还活着.2.如果超过一定时间(630秒),namenode没收到datanode的心跳包,就认为它宕机了.此时就会将该datanode的块信息,交由其它活跃的datanode来存储.3.所有的datanode会定时(6个小时),向namenode汇报一次自己完整的块信息,让namenode校验更新

负载均衡:
namenode会保证所有的datanode的资源使用率,尽量保持一致

副本机制:
可以提高容错率,默认的副本数是: 3
如果当前副本总数 > 默认的副本数(3),namenode会自动删除某个副本如果当前副本总数 < 默认的副本数(3),namenode会自动增加该副本.如果当前活跃的机器总数 《 默认的副本数(3),例如: 默认3副本,但是现在只有2台机器活跃了就会强制进入到 安全模式(safemode),安全模式下: 只能读,不能写

更多配置,详见Hadoop官方文档:
https://hadoop. apache. org/docs/r3. 3. 0/hadoop-project-dist/hadoop-hdfs/hdfs-default.xm

8. HDFS的Shell命令

# HDFS的Shell命令, 类似于Linux的Shell命令, 格式稍有不同, 具体如下:
hadoop fs -选项 参数		# 既能操作HDFS文件系统, 还能操作本地文件系统.
hdfs dfs -选项 参数			# 只能操作HDFS文件系统. 

# 细节: 操作HDFS路径的时候, 建议加上前缀  hdfs://node1:8020/

# -ls命令, 查看指定的HDFS路径下所有的内容. 
hadoop fs -ls /			# 查看根目录下所有内容(不包括子级)
hadoop fs -lsr /		# 查看根目录下所有内容(包括子级), 该命令已过时, 不推荐用.
hadoop fs -ls -R /		# 查看根目录下所有内容(包括子级), 该命令已过时, 不推荐用.

# mkdir命令, 创建目录
hdfs dfs -mkdir /aa				# 创建单级.
hdfs dfs -mkdir -p /aa/bb/cc/dd	# 创建多级目录.

# cat命令, 查看文件内容.
hadoop fs -cat /input/word.txt

# mv命令, 剪切. 只能是 HDFS路径 => HDFS路径
hadoop fs -mv /input/word.txt /aa

# cp命令, 拷贝. 只能是 HDFS路径 => HDFS路径
hadoop fs -cp /input/word.txt /aa

# rm命令, 删除.
hadoop fs -rm /aa/bb/word.txt
hadoop fs -rmr /aa		# 递归删除aa文件夹
hadoop fs -rm -r /aa	# 递归删除aa文件夹, 效果同上.

# put命令, 把Linux系统的文件 上传到 HDFS文件系统中. 
hadoop fs -put 1.txt /input		# 1.txt是Linux的文件路径, /input是HDFS的目录路径

# get命令, 把HDFS文件系统的某个文件 下载到 Linux系统的文件中.
hadoop fs -get /input/1.txt ./	# 1.txt是HDFS的文件路径,  ./Linux的路径.

文章来源:https://blog.csdn.net/jixiangendless/article/details/135465719
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。