一、 Hadoop来源:Google 三大论文 MapReduce / GFS / BigTable
1、Hadoop Common: 为其他Hadoop模块提供基础设施 2、Hadoop HDFS (Hadoop Distributed File System) 一个高可靠、高吞吐量的分布式文件系统 3、Hadoop MapReduce 一个分布式的离线并行计算框架 4、Hadoop YARN (Yet Another Resource Negotiator) 一个新的MapReduce框架,任务调度及资源管理 HDFS NameNode是主节点,储存文件的元数据如文件名,文件目录结构,文件 属性(生成时间,副本数,文件权限),以及每个文件的块列表和块所在DataNode等。 DataNode 在本地文件系统储存文件块数据,以及块数据的效验。 Secondary NameNode 用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照
YARN: ResourceManager 处理客服端请求 启动/监控ApplicationMaster 监控NodeManager 资源分配与调度
ApplicationMaster 数据切分 为应用程序申请资源,并分配给内部任务 任务监控与容错
NodeManager 单节点上的资源管理器 处理来自ResourceManager的命令 处理来自ApplicationMaster的命令
Container 对任务运行环境的抽象,封装了CPU、内存等多维资源以及环境变量、启动命令等任务运行相关信息
MapReduce计算框架 计算过程分为两个阶段:Map 和 Reduce Map阶段并行处理输入数据 Reduce阶段对Map阶段进行汇总。
Shuffle链接Map和Reduce两个阶段 Map Task将数据写到本地磁盘 Reduce Task从每个Map Task读取一份数据
特点: 仅适合离线处理 具有很好的容错性和扩展性 适合简单的批量任务
缺点: 启动开销大,过多使用磁盘导致磁盘性能降低等
二、Hadoop伪分布式安装部署 1.上传压缩包到指定目录
2.解压到指定目录 # tar -zxf hadoop-2.6.0.tar.gz -C /opt/modules/
3.目录介绍 bin:执行文件目录 etc:Hadoop配置文件都在此目录 include:包含C语言接口开发所需头文件 lib:包含C语言接口开发所需链接库文件 libexec:运行sbin目录中的脚本会调用该目录下的脚本 logs:日志目录,在运行过Hadoop后会生成该目录 sbin:仅超级用户能够执行的脚本,包括启动和停止dfs、yarn等 share:包括doc和hadoop两个目录 doc目录包含大量的Hadoop帮助文档 hadoop目录包含了运行Hadoop所需的所有jar文件,在开发中用到的jar文件也可在该目录找到
4.根据官方文档配置: --》etc/hadoop/hadoop-env.sh --》在第25行配置JDK安装路径 export JAVA_HOME=/opt/modules/jdk1.7.0_67
5.配置mapred-env.sh --》第16行,去掉注释,配置JDK export JAVA_HOME=/opt/modules/jdk1.7.0_67
6.配置yarn-env.sh --》第23行,去掉注释,配置JDK export JAVA_HOME=/opt/modules/jdk1.7.0_67
7.配置etc/hadoop/core-site.xml (hadoop核心配置文件) --》指定文件系统所在机器位置及交互端口号 <property> <name>fs.defaultFS</name> <value>hdfs://bdqn.linux.com:8020</value> </property>
--》配置hadoop数据存储目录 --》在Hadoop家目录下创建目录:mkdir -p data/tmp <property> <name>hadoop.tmp.dir</name> <value>/opt/modules/hadoop-2.6.0/data/tmp</value> </property>
8.配置etc/hadoop/hdfs-site.xml --》配置数据副本数量,默认为3 <property> <name>dfs.replication</name> <value>1</value> </property>
9.格式化NameNode bin/hdfs namenode -format 如果发生错误 执行rm -rf data/tmp/* bin/hdfs namenode -format
10.启动HDFS节点测试: 单节点启动方式: sbin/hadoop-daemon.sh start namenode sbin/hadoop-daemon.sh start datanode
HDFS全节点启动方式: sbin/start-dfs.sh
测试: 方式一:jps 2445 NameNode 2603 Jps 2531 DataNode
方式二:通过web页面访问HDFS 主机名:端口号 bdqn.linux.com:50070
方式三:通过命令测试 创建目录: bin/hdfs dfs -mkdir /input 上传文件: bin/hdfs dfs -put README.txt /tom
单节点关闭方式: sbin/hadoop-daemon.sh stop namenode sbin/hadoop-daemon.sh stop datanode
HDFS全节点关闭方式: sbin/stop-dfs.sh
11.配置etc/hadoop/mapred-site.xml 重命名配置文件:# mv mapred-site.xml.template mapred-site.xml --》让MapReducer运行在YARN <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
12.配置etc/hadoop/yarn-site.xml --》map和reducer中间使用shuffle进行混洗 <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property>
13.配置slaves 此文件为从节点配置文件,指定从节点所在机器位置 bdqn.linux.com
14.启动测试 YARN全启动方式 sbin/start-yarn.sh
YARN单节点启动方式: sbin/yarn-daemon.sh start resourcemanager sbin/yarn-daemon.sh start nodemanager
方式一:jps 3457 NodeManager 3178 ResourceManager
方式二:通过web页面访问 主机名:端口号 bdqn.linux.com:8088
YARN关闭方式: sbin/stop-yarn.sh
YARN单节点关闭方式: sbin/yarn-daemon.sh stop resourcemanager sbin/yarn-daemon.sh stop nodemanager
15.wordcount程序 需求:完成一个单词统计程序 15.1准备待统计文件: vi hello.txt 写入待统计的单词 ……………… ……………… ………………
15.2将待统计文件上传到HDFS bin/hdfs dfs -put /opt/datas/hello.txt /input
15.3通过hadoop自带jar包运行wordcount程序 bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar wordcount /input/ /output/
注意:最终输出结果目录 一定不能存在
15.4查看输出结果 bin/hdfs dfs -cat /output/part-r-00000
16.环境变量配置 vi /etc/profile -->在最后一行插入以下内容 #HADOOP_HOME export HADOOP_HOME=/opt/modules/hadoop-2.6.0 export PATH=$PATH:$HADOOP_HOME/bin
--》生效配置文件 source /etc/profile
--》退出所有用户并重新登录 exit
-->测试:hadoop version Hadoop 2.6.0
|