快速理解Hadoop
Hadoop就像是windows一样, 但是hadoop可以同时分布在多台主机上, 同时控制多台主机.
而hdfs就是分布式文件存储系统, windows也有自己的文件系统, 而yarn就是一个生态圈, 在yarn上可以安装许多应用程序,如HBase, 类似windows上安装的高级的wps, 画图软件等等. 当然yarn本身也自带一些简陋的功能, 就像windows一样也自带一些记事本功能.
Hadoop两大核心(特点: 分布式)
- 分布式存储 hdfs
- 分布式计算的资源管理平台 yarn(mapreduce)
HDFS 分布式文件系统
是一个文件分布式系统, 它是由多台主机组成的集群环境来完成大规模的数据存储和读取任务.
windows通常用的就是NTFS.
- 主节点 Namenode 存储所有的元数据(metadata), 完成任务的调度(存数据和读数据都要和namenode打招呼, 但是数据并不经过namenode, 即Namenode起到管理的作用. 真正存储数据的是Datanode)
- 从节点 Datanode 可以存储在多台主机上, 真正的存储, 修改, 删除等管理数据. hadoop集群中最多的节点.
- Namenode和Datanode之间是会传递数据的, 但是注意的是: 传递的不是真正要存储的数据, 而是传递的是元数据metadata. 即Datanode定时的会向Namenode报告, datanode数据块存储的情况. 数据的冗余度(Replication)即为数据的备份数. 可在配置文件中配置.
YARN为核心的生态圈(ResourceManager)
yarn作为一个分布式计算的资源管理平台, 他还能支持其他分布式框架(spark, hbase, hive等等)
YARN有两个独立的守护进程,管理集群上资源使用的资源管理器进程, 管理集群上运行任务生命周期的任务管理进程.
(Namenode)ResourceManager进程来决定接收到的任务到底由哪些节点完成计算按, 真正启计算作用的就是(Datanode)NodeManager进程(如Map怎么做, Reduce怎么做, 两个如何结合在一起等等具体调度操作).
可以在yarn上安装各种应用程序来完成自己需要的功能. 如安装HBase数据库, MapReduce, Spark等等.
所以我们通常不直接用hadoop, 我们在都是在yarn上安装 ‘应用软件’: Storm, Spark, HBase, Hive等等, 从而来使用大数据应用.
当然了, 一开始我们是要掌握hadoop的基础的, 就像我们一开始用windows也要学会用他自带的一些基础功能:如记事本, 计算器, 画图扥等.
MapReduce
将一个任务(称作为job), 处理过程分为 Map过程和Reduce过程,
Map的输入是hdfs, Map的输出是Reduce的输入. Reduce的输出是hdfs.
Map的输入 可以在分布多台主机上. 将每台主机map的结果一起输出到一台主机上进行Reduce,(当然Reduce也可以分布在多台主机上同时进行) 从而获得MapReduce的结果存到hdfs中(当然也可以存储到外部数据库中).
将数据上传到Hadoop的hdfs上.
用jps查看进程启动情况, 主节点和从节点等等, 具体会有如下进程运行中:
1 | NameNode 主节点hdfs用的 |
hdfs的文件命令:
查看hdfs上文件目录
hdfs dfs -ls /
在hdfs上创建文件夹
hdfs dfs -mkdir -p /dottie/data
上传文件到hdfs指定文件夹
hdfs dfs -put hello.txt /dottie/data
查看是否上传成功
hdfs dfs -ls /dottie/data
查看具体内容
hdfs dfs -cat /dottie/data/output/part-r-0000
下载文件
hdfs ds -get /dottie/data/hello.txt
命令跟linux下差不多, 都是 hdfs dfs -命令 操作
- 运行mapreduce中的wordcount程序: 参考我的上一篇 hadoop博客, 里面具体过程写的很详细.
详细命令如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 /**
* hdfs相关命令(本质和liux下的命令类似.)
* 前缀都是: hdfs dfs -
* 1. mdkir 创建文件夹
* 2. ls 查看目录
* 3. ls -R 查看目录以及子目录
* 4. moreFromLocal 上传一个文件, 并且删除本地文件
* 5. copyFromLocal 上传一个文件, 和put效果一样
* 6. copyToLocal 下载文件
* 7. get 下载文件
* 8. rm 删除文件
* 9. getmerge 将目录内的内容先合并, 然后再下载下来
* 10. cp 拷贝一份文件
* 11. mv 移动文件或者修改名称
* 12. count 统计目录下文件的数目
* 13. text, cat 查看文件的内容
* 14. balancer 平衡操作
*/
Shuffle(洗牌)
Shuffle过程是MapReduce分布式计算高效实现的核心.
Shuffle过程的结果指向过个Reduce过程, Shuffle属于不断被优化和改进的代码库的一部分.