期末复习
Hadoop的核心结构HDFS, MapReduce ,YARN
Hadoop的安装
5个配置文件 core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml workers
启动
start-dfs.sh
start-yarn.sh
jps查看进程
NameNode:它是hadoop中的主服务器,管理文件系统名称空间和对集群中存储的文件的访问,保存有metadate。
SecondaryNameNode:它不是namenode的冗余守护进程,而是提供周期检查点和清理任务。帮助NN合并editslog,减少NN启动时间。
DataNode:它负责管理连接到节点的存储(一个集群中可以有多个节点)。每个存储数据的节点运行一个datanode守护进程。
ResourceManager(JobTracker):JobTracker负责调度DataNode上的工作。每个DataNode有一个TaskTracker,它们执行实际工作。
NodeManager:(TaskTracker)执行任务。
怎么格式化
hadoop namenode -foramt
文件上传的指令
Command-line方式
hadoop fs -put /xxx /xxxx用API来上传
Configuration conf = new Configuration();
conf.set(“fs. defaultFS”,” hdfs://hadoop201:8020”);
FileSystem fs = FileSystem.get(conf);
Path srcPath = new Path(“xxx”);
Path dstPath = new Path(“xxx”);
fs.copyFromLocalFile (srcPath, dstPath);
fs.close();
HDFS的读写机制
写
- 客户端通过FileSystem向NameNode请求上传文件
- NameNode检查目标地址,是否存在,目录是否存在,确认是否可以上传
- NameNode告诉客户端你要怎么去分割文件
- 客户端请求第一个block上传到哪几个DataNode
- NameNode返回DataNode节点
- 客户端通过FSDataOutputStream请求向指定DataNode节点上传数据,
- 比如副本数量有3个,只传一个节点,然后由这个节点再传给其他2个副本节点
- client->dn1->dn2->dn3,客户端第一个数据包发送到dn1后,dn1就会往dn2写
- dn2写完第一个就会往dn3传
读
- 客户端通过FileSystem向NameNode请求下载文件
- NameNode查询Metadata,找到请求的文件在哪个Datanode上
- NameNode挑选出一台DataNode(就近原则),请求读取数据
- DataNode开始传输数据给客户端,流的方式
- 客户端以包为单位接收,先存到本地缓存,然后再写到目标文件
MapReduce的优缺点
优点:
高可靠HA High Available
数据会被自动保存为多个副本(默认3个),提高了容错性,坏了一个可以自动回复提高IO性能
原理类似raid,一个硬盘的IO吞吐能力是有限的,多副本存在,可以高并发适合处理大数据
数据规模很大的时候,GB TB PB物美价廉
EMC存储,Oracle数据库,IBM服务器 去IOE
普通的廉价服务器,通过多副本机制,提高可靠性,就便宜了
缺点:
不适合低延迟数据访问
本地100m 1秒读完,1TB文件,本机10000秒读完,
hdfs 100m 连接10s 调配10s 读取1s 21 1TB 连接10s 调配10s 读取3000s
只适合较大数据的分析,存取无法高效处理小文件
namenode管理小文件会耗费大量内存和存储信息写入并发处理不好,修改支持不好
支持追加数据,随机修改不支持不擅长DAG
MapReduce工作流程(看图记住)
执行都是Job
MapTask (shuffle) ReduceTask
Combiner
MapReduce编程
Mapper怎么写
Reducer怎么写
Job 怎么写
- 去重
- 计数 wordcount
- 统计总分,均分
- 好友推荐
- 排序
- 表的合并
Hive是什么
给你几张表会写sql语句查询
id 月份 次数
1001 2020-1 1
1002 2020-2 3
1001 2020-2 5
1003 2020-3 6
1002 2020-10 3
1003 2020-4 1
1001 2020-3 2
1001 2020-4 1
1002 2020-11 2
1004 2020-10 4
统计用户累计访问次数,和单月最大次数