HDFS中的基本概念
块(Block):HDFS的文件被分成块进行存储,HDFS块的默认大小是64MB。块是文件存储处理的逻辑单元
NameNode:NameNode是管理节点,存放文件元数据
(1)文件与数据块的映射表
(2)数据块与数据节点的映射表
DataNode:DataNode是HDFS的工作节点,存放数据块
HDFS体系结构
HDFS的数据管理与容错
(1)每个数据块3个副本,分布在两个机架内的三个节点
(2)DataNode定期向NameNode发送心跳消息
(3)二级NameNode定期同步元数据映像文件和修改日志。NameNode发生故障时,备胎转正
HDFS读取文件的流程:
HDFS 特点
(1)数据冗余,硬件容错
(2)流式的数据访问(一次写入多次读取)
(3)适合存储大文件
(4)适合数据批量读写,吞吐量高
(5)适合一次写入多次读取,顺序读写。不支持多用户并发写相同文件
HDFS命令操作演示
hadoop fs -ls /
haddoop fs -rm hadoop-env.sh
hadoop fs -mkdir input
hadoop fs -put hadoop-env.sh input/
hadoop fs -cat input/hadoop-env.sh
hadoop fs -get input/hadoop-env.sh hadoop-env2.sh
MapReduce原理
分而治之,一个大任务分成多个小的子任务(map),并行执行后,合并结果(reduce)
MapReduce运行流程
Job & Task:一个Job可以分成多个map task和 reduce task
JobTracker:作业调度、分配任务、监控任务执行进度、监控TaskTracker的状态
TaskTracker:执行任务、汇报任务状态
MapReduce应用案例--WordCount单词计数
计算文件中出现的每个单词的频数,输入结果按照字母的顺序排序
首先编写好代码(编写WordCount.java,里面包含Mapper类和Reducer类)
编译
javac -classpath /usr/hadoop/hadoop-1.2.1/hadoop-core-1.2.1.jar:/usr/hadoop/hadoop-1.2.1/commmons-cli-1.2.jar -d word_count_class/ WordCount.java
打包
cd word_count_class
jar -cvf wordcount.jar *.class
创建输入和输出文件file1和file2
将filhe1 和 file2提交至 hdfs中去
cd ......
hadoop fs -mkdir input_wordcount //hdfs中创建文件夹
hadoop fs -put input/* input_wordcount/ //将file1 和 file2提交至 hdfs中去
可以通过 hadoop fs -ls 命令查看 input_wordcount文件夹的位置
提交
hadoop jar word_count_class/wordcount.jar WordCount input_wordcount output_wordcount
查看结果
hadoop fs -ls output_wordcount //查看结果文件所在位置
hadoop fs -cat output_wordcount/part-r-00000 //打开文件
閱讀更多 我的內容我做主 的文章