Hadoop项目主要包括一下四个模块
1、Hadoop Common
为其他Hadoop模块提供基础设施。
2、Hadoop HDFS
一个高可靠、高吞吐量的分布式文件系统
3、Hadoop MapReduce
一个分布式的离线并行计算框架。
4、Hadoop YARN
一个新的MapReduce框架,任务调度与资源管理。
HDFS系统架构
1、NameNode:是主节点,存储文件的元数据,如文件名、文件目录结构、文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在DataNode等信息。NameNode的元数据中一部分存放在内存中的进程中,另一部分存放在本地磁盘(fsimage镜像文件和edits编辑日志)。
2、DataNode:在本地文件系统存储文件块数据,以及块的校验和。
3、Secondary NameNode:用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。(配置HA后,不启动)
Yarn系统架构
1、ResourceManager:处理客户端请求;启动/监控ApplicationMaster;监控NodeManager;资源的分配和调度。
2、ApplicationMaster:数据切分;为应用程序申请资源,并分配给内部任务;任务监控与容错。
3、NodeManager:单节点上的资源管理;处理来自ResourceManager的命令;处理来自ApplicationMaster的命令。
4、Container:对任务运行环境的抽象,封装了CPU、内存等多维资源以及环境变量、启动命令等任务运行相关的信息。
MapReduce分布式离线计算框架
1、将计算过程分为两个阶段,Map和Reduce
Map阶段并行处理输入数据
Reduce阶段对Map结果进行汇总
2、Shuffle连接Map和Reduce两个阶段
Map Task将数据写到本地磁盘
Reduce Task从每个Map Task上读取一份数据
3、仅适合离线批处理
具有很好的容错性和扩展性
适合简单的批处理任务
4、缺点明显
启动开销大、过多使用磁盘导致效率低
Hadoop2.X环境的搭建伪分布配置
1、安装相应软件(1)设置静态ip
在centos桌面右上角的图标上,右键修改重启网卡:service network restart
验证:ifconfig
(2)修改主机名
修改当前回话的主机名:hostname hadoop-senior.ibeifeng.com
修改配置文件中的主机名:vi /etc/sysconfig/network
验证:重启电脑 reboot
(3)主机名和ip绑定
vi /etc/host
192.168.217.130 hadoop-senior.ibeifeng.com hadoop-senior
(4)关闭防火墙
执行命令:service iptables stop
验证:chkconfig --list | grep iptables
(5)SSH(secure shell)免密码登录
执行命令: ssh-keygen ot rsa 产生密钥,位于~/.ssh文件夹中
执行命令: cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
验证:ssh localhost
(6)安装jdk1.7、配置环变量
./jdk-7u24-linux-i586.bin
配置环境变量 vi /etc/profile
export JAVA_HOME=/usr/local/jdk1.7
export PATH=.:$JAVA_HOME/bin:$PATH
执行source /etc/profile
验证:java -version
(7)安装Hadoop2.5.0
tar -zxvf hadoop-2.5.0.tar.gz -C /opt/modules/hadoop-2.5.0/
2、HDFS的配置文件
hadoop-env.sh
export JAVA_HOME=${JAVA_HOME} ###如果JAVA_HOME的环境变量配置好可以不修改,这里统一修改为echo $JAVA_HOMT的地址
core-site.xml:
<pre name="code" class="plain"><property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop-senior.ibeifeng.com:8020</value> --改成自己的主机信息
</property>
<property>
<name> hadoop.tmp.dir</name>
<value>/opt/modules/hadoop-2.5.0/data/tmp</value> --改成自己的位置
</property>
hdfs-site.xml:<property>
<name>dfs.replication </name>
<value>1 /value>
</property>
3、格式化文件系统$ bin/hdfs namenode –format
4、启动NameNode daemon 和DataNode daemon$ sbin/start-dfs.sh 或者
$ sbin/hadoop-daemon.sh start namenode
$ sbin/hadoop-daemon.sh start datanode
启动的时候会产生日志文件,日志文件在logs文件夹下.log文件记录大部分应用程序的日志信息
.out记录标准输出和标准错误日志
日志文件命令规则:
框架名称-用户名-进程名-主机名-日志格式后缀
5、HDFS提供的Web界面,端口号50070。
http://hadoop-senior.ibeifeng.com:50070/
6、HDFS的shell命令$ bin/hdfs dfs –mkdir –p /user/beifeng/
$ bin/hdfs dfs –ls –R
.......
7、Yarn的配置yarn-env.sh
export JAVA_HOME=${JAVA_HOME} ###如果JAVA_HOME的环境变量配置好可以不修改,这里统一修改为echo $JAVA_HOMT的地址
yarn-site.xml:<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop-senior.ibeifeng.com</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
slaves配置从节点信息,一行代表一个主机
8、yarn的启动
$ sbin/start-yarn.sh 或者
$ sbin/yarn-daemon.sh start resourcemanager
$ sbin/yarn-daemon.sh start nodemanager
9、Yarn的监控界面端口号为:8088http://hadoop-senior.ibeifeng.com:8088/
10、配置MapReduce运行到yarn上mapred-env.sh
export JAVA_HOME=${JAVA_HOME} ###如果JAVA_HOME的环境变量配置好可以不修改,这里统一修改为echo $JAVA_HOMT的地址
mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
11、mr测试程序$ sbin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar wordcount /user/input /user/output
12、启动历史服务器查看已经运行完成的MR作业记录,比如用了多少时间,多少个Reduce、作业提交时间、作业启动时间、作业完成时间等。
默认情况下,历史服务器是没有启动的。
$ sbin/mr-jobhistory-daemon.sh start historyserver
13、yarn的日志聚集功能配置和使用,LogAggregation聚集:应用程序完成之后,将日志信息上传到HDFS系统。
yarn-site.xml
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>设置存在的时间多少秒</value>
</property>
14、hdfs垃圾回收(误删除可以在回收站找回)配置core-site.xml:
<property>
<name>fs.trash.interval</name>
<value>在垃圾回收站的存留时间分钟</value>
</property>
Hadoop2.x各个服务组件如何配置在哪台服务器
1、HDFS模块:NameNode:是由哪个文件中的哪个配置属性指定的呢?
core-site.xml文件中;
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop-senior.ibeifeng.com:8020</value>
</property>
DataNodes:是由哪个文件中的哪个配置属性指定的呢?slaves文件中一行为一个DataNode
hadoop-senior.ibeifeng.com
SecondaryNameNode:是由哪个文件中的哪个配置属性指定的呢?hdfs-site.xml文件中;
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop-senior.ibeifeng.com:50090</value>
</property>
2、YARN模块:ResourceManager:是由哪个文件中的哪个配置属性指定的呢?
yarn-site.xml文件中;
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop-senior.ibeifeng.com</value>
</property>
NodeManagers:是由哪个文件中的哪个配置属性指定的呢?slaves文件中一行为一个NodeManager
hadoop-senior.ibeifeng.com