Hadoop的本地模式
1、特点:不具备HDFS,只能测试MapReduce程序
2、修改hadoop-env.sh
修改第27行:export JAVA_HOME=/opt/jdk1.7.0_75
3、演示Demo: $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples2.6.5.jar
命令:hadoop jar hadoop-mapreduce-examples-2.6.5.jar wordcount /root/data/input/data.txt /root/data/output/wc
日志:17/08/04 23:28:38 INFO mapreduce.Job: map 100% reduce 100%
注意:MR有一个默认的排序规则
Hadoop的伪分布模式
1、特点:具备Hadoop的所有功能,在单机上模拟一个分布式的环境
(1)HDFS:主:NameNode,数据节点:DataNode
(2)Yarn:容器,运行MapReduce程序
主节点:ResourceManager
从节点:NodeManager
2、步骤:
(1)hdfs-site.xml
<!--配置HDFS的冗余度-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
副本配置
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>192.168.8.131:50090</value>
</property>
<!--配置是否检查权限-->
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
(2)core-site.xml
<!--配置HDFS的NameNode-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.8.xxx:9000</value>
</property>
<!--配置DataNode保存数据的位置-->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop-2.6.5/tmp</value>
</property>
(3) mapred-site.xml
<!--配置MR运行的框架-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
(4) yarn-site.xml
<!--配置ResourceManager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>192.168.8.xxx</value>
</property>
<!--配置NodeManager执行任务的方式-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
(5) 格式化NameNode
hdfs namenode -format
日志:Storage directory /opt/hadoop-2.6.5/tmp/dfs/name has been successfully formatted.
(6) 启动:start-all.sh
(*) HDFS: 存储数据
(*) Yarn:执行计算
(7) 访问:(*)命令行
(*)Java API
(*)Web Console:
HDFS:http://192.168.8.xxx:50070
Yarn:http://192.168.8.xxx:8088
startup Progressing:启动过程
NameNode工作机制
checkPoint:
每隔一段时间或数据写满,会由secondary namenode将namenode上的积累的所有edit文件和最新的一个fsimage文件下载到本地,并加载到内存中的过程
配置checkPoint时间
<property>
<name>dfs.namenode.checkpoint.period</name>
<value>7200</value>
</property>
# DataNode
启动机制:
datanode向namanode进行注册-》datanode实时向namenode汇报运行状态,会产生一个crc的校验文件
Mapreduce模型
Yarn的工作机制
小文件优化:
小文件合并为大文件
自定义分区
实现partitioner<key, value>接口
重写getpartition方法
使自定义生效:job.setPartitionerClass(自定义类.class);
设置任务数:job.setNumReduceTasks(大于分区数);
分区排序:
1)实现WritableCompartable接口
2)重写comparto方法
排序的分类:
1)部分排序
2)全排序
3)辅助排序
整个mapreduce流程:
Shuff机制