名称节点包含的两大核心数据结构是什么?分别有什么作用?名称节点是如何知道具体一个数据块存储在哪个数据节点上的?
两大核心数据结构:FsImage和EditLog
作用:1.FsImage维护文件系统树以及文件树中所有的文件和文件夹的元数据
2. EditLog记录所有针对文件的创建、删除、重命名等动态操作
由名称节点把这些映射信息保留在内存中,当数据节点加入HDFS集群时,数据节点会把自己所包含的块列表告知给名称节点,此后会定期执行这种告知操作,以确保名称节点的块映射是最新的。
HDFD的主从结构集群中NameNode是单节点,会存在什么隐患?你有什么解决方案?
隐患:
名称结点能够容纳的对象的个数会受到内存空间大小的限制
整个分布式文件系统的吞吐量,受限于单个名称节点的吞吐量
无法对不同应用程序进行隔离
一旦名称节点发生故障,会导致整个集群变得不可用
解决方案:
利用Zookeeper,QJM实现高可用。两个NameNode,一个处于active状态,另一个处于standby状态。这两台NameNode以第三方的文件系统QJM为中介实现通信,即使ActiveNameNode挂了,StandbyNameNode也会完美接手他的工作。Zookeeper负责分布式协调,控制整个集群有且仅有一个active master。
利用Hadoop提供的Shell命令完成下列任务:
1、将HDFS中的文件“/user/hadoop/text1.txt”的内容输出到终端。
2、显示HDFS中的文件“/user/hadoop/text1.txt”的读写权限、大小、创建时间、路径等信息。
3、输出HDFS的目录“/user/hadoop"下的所有文件的读写权限、大小、创建时间、路径等信息,如果该文件是目录,则递归遍历输出该目录下所有文件相关信息。
4、在HDFS中创建目录“/user/hadoop/”,如果目录不存在则自动创建相应目录。
5、删除HDFS中的目录“/user/hadoop”,无论目录是否为空均执行强制删除操作。
6、将本地文件“/usr/tmp/local.txt”追加到HDFS文件text1.txt的结尾。
7、删除HDFS中的指定文件text1.txt。
8、将HDFS中的文件text1.txt从/user/hadoop路径移动到/user/hadoop/tmp路径下且重命名为text2.txt。
1. hadoop fs -cat /user/hadoop/text1.txt
2. hadoop fs -ls /user/hadoop/text1.txt
3. hadoop fs -ls -R /user/hadoop
4. hadoop fs -mkdir -p /user/hadoop/
5. hadoop fs -rm -R /user/hadoop
6. hadoop fs -appendToFile /usr/tmp/local.txt /user/hadoop/text1.txt
7. hadoop fs -rm /user/hadoop/text1.txt
8. hadoop fs -mv /user/hadoop/text1.txt /user/hadoop/tmp/text2.txt
有学生及其选课的原始输入数据如下(学号、课程名):
20150101 x
20150101 y
20150102 y
20150103 x
20160104 z
20160105 x
20160105 z
20160106 x
20160106 y
20170107 x
20170108 y
请统计每门课程的选课人数。
要求:
1 . 请写出自定义CourseMapper的map方法和CourseReducer的reduce方法;
2 . 根据上述数据和代码,写出map任务的输出;
3 . 根据上述数据和代码,写出reduce任务的输入、输出;
4 . 如果采用HiveQL实现,请写出相关的SQL语句。
(1)
public static class CourseMapper extends Mapper