1、hadoop的介绍
(1)Hadoop最早起源于Nutch。Nutch的设计目的是构建一个大型的全网搜索引擎,包括网页抓取、索引、查询等功能,但随着抓取网页数量的增加,遇到了严重的可扩展性问题—如何解决数十亿网页的存储和索引问题。
(2)2003、2004年谷歌发表了两篇论文为该问题提供了可行的解决方案
—分布式文件系统(GFS),可用于处理海量网页的存储
—分布式计算框架(MAPREDUCE),可用于处理海量网页的索引计算问题
(3)Nutch的开发人员完成了相应的开源实现HDFS和MAPREDUCE,并从Nutch中剥离成为独立的项目HADOOP,到2008年1月,成为apache的顶级项目。
狭义上说,hadoop就是单独代指hadoop这个软件
HDFS:分布式文件系统
MAPREDUCE:分布式计算系统
Yarn:分布式样集群资源管理
广义上说,hadoop代指大数据的一个生态圈,包括很多其它的软件
2、Hadoop的历史版本和发行版公司
2.1、Hadoop历史版本
1.x版本系列:hadoop版本中的第二代开源版本,主要修复0.x版本的一些bug
2.x版本系列:架构产生重大变化,引入了yarn平台等许多新特性
3.x版本系列:加入许多namenoode新特性
(上课讲的2.x,因为2.x最稳定)
2.2、Hadoop三大发行版公司
(1)免费开源版本apache
http://hadoop.apache.org/
优点:拥有全世界的开源贡献者,代码更新迭代版本比较快
缺点:版本的升级,版本的维护,版本的兼容性,版本的补丁都可能考虑不太周到
apache所有软件的下载地址(包括各种历史版本):
http://archive.apache.org/dist/
(2)免费开源版本hortonWorks:
hortonWorks现在和ClouderManager合并了
(3)软件收费版本ClouderManager
目前做大数据做的最好的公司
3、Hadoop的架构模型
3.1、1.x的版本结构模型介绍

文件系统核心模块:
NameNode:集群当中的主节点,管理元数据(文件的大小、文件的位置、文件的权限),主要用于管理集群当中的各种数据。
secondaryNameNode:主要能用于hadoop当中元数据信息的辅助管理。
DataNode:集群当中的从节点,主要用于存储集群当中的数据。
数据计算核心模块:
JobTracker::接收用户的计算请求任务,并分配任务给从节点。
TaskTracker:负责执行主节点JobTracker分配的任务。
3.2、2.x的版本结构模型介绍
3.2.1、第一种:NameNode与ResourceManager单节点架构模型

文件系统核心模块:
NameNode:集群当中的主节点,管理元数据(文件的大小、文件的位置、文件的权限),主要用于管理集群当中的各种数据。
secondaryNameNode:主要能用于hadoop当中元数据信息的辅助管理。
DataNode:集群当中的从节点,主要用于存储集群当中的数据。
数据计算核心模块:
ResourceManager:接收用户的计算请求任务,并负责集群的资源分配
NodeManager:负责执行主节点APPmaster分配的任务
第一种出现单点故障不好维护
3.2.2、第二种:NameNode单节点与ResourceManager高可用架构模型

文件系统核心模块:
NameNode:集群当中的主节点,管理元数据(文件的大小、文件的位置、文件的权限),主要用于管理集群当中的各种数据。
secondaryNameNode:主要能用于hadoop当中元数据信息的辅助管理。
DataNode:集群当中的从节点,主要用于存储集群当中的数据。
数据计算核心模块:
ResourceManager:接收用户的计算请求任务,并负责集群的资源分配,以及计算任务的划分,通过zookeeper实现ResourceManager的高可用。
NodeManager:负责执行主节点APPmaster分配的任务。
3.2.3、第三种:NameNode高可用与ResourceManager单节点架构模型

文件系统核心模块:
NameNode:集群当中的主节点,管理元数据(文件的大小、文件的位置、文件的权限),主要用于管理集群当中的各种数据,其中NameNode可以有两个,形成高可用状态,通过zookeeper进行监控它的状态。
DataNode:集群当中的从节点,主要用于存储集群当中的数据。
JournalNode:文件系统元数据信息管理。
数据计算核心模块:
ResourceManager:接收用户的计算请求任务,并负责集群的资源分配。
NodeManager:负责执行主节点APPmaster分配的任务。
3.2.3、第四种:NameNode与ResourceManager高可用架构模型
最理想的方式:
以上四种方式,第四种最理想,但是在学习阶段各种资源有限,所以采用的是第一种单节点的。
4、apache版本Hadoop重新编译
4.1、为什么要编译Hadoop
4.2、编译环境的准备
4.2.1、准备linux环境
准备一台linux环境,内存4G或以上,硬盘40G或以上,课程使用的是CentOS6.9 64位的操作系统(注意:一定要使用64位的操作系统)
4.2.2、虚拟机联网,关闭防火墙,关闭selinux
关闭防火墙命令:
service iptables stop
chkconfig ittables off
关闭selinux:
vim /etc/selinux/config
进入这个配置文件:
有SELINUX=DISABLED即可
4.2.3、安装jdk1.7
注意hadoop-2.7.5这个版本的编译,只能使用jdk1.7,如果使用jdk1.8那么就会报错
查看Centos自带的openjdk
rmp -qa | grep java
查看有没有自带的jdk,如果有就卸载:
rpm -e java-…….自带的jdk,中间用空格隔开
将jdk安装包上传到/export/softwares里
解压jdk压缩包
rz -E 去本机选择jdk压缩包进行上传
如果rz -E不能使用,就需要装:
yum -y install lrzsz
然后可以开始使用
cd /export/softwares
tar -zxvf jdk-7u71-linux-x64.tar.gz -C ../servers/
配置环境变量
vim /etc/profile
在配置文件中加:
export JAVA_HOME=/export/servers/jdk1.7.0_71
export PATH=:$JAVA_HOME/bin:$PATH
让修改立即生效:
source /etc/profile
解压maven仓库:
tar -zxvf mvnrepository.tar.gz -C /export/servers/
修改maven配置文件:
cd /export/servers/apache-maven-3.0.5/conf
vim setting.xml
指定本地仓库存放的路径
cd /export/servers/mvnrepository/
ls
pwd 查看的就是本地仓库的位置,将这个路径复制,放到setting.xml文件
添加一个阿里云的镜像地址,下载jar包会更快
加在mirrors中
4.2.4、安装findbugs
解压findbugs
cd /export/softwares/
tar -zxvf findbugs-1.3.9.tar.gz -C ../servers/
配置findbugs的环境变量
vim /etc/profile
在配置文件中添加:
export FINDBUGS_HOME=/export/servers/findbugs-1.3.9
export PATH=:$FINDBUGS_HOME/bin:$PATH
让修改立即生效:
source /etc/profile
4.2.5、在线安装一些依赖包
yum install autoconf automake libtool cmake
yum install ncurses-devel
yum install openssl-devel
yum install lzo-devel zlib-devel gcc gcc-c++
bzip2压缩需要的依赖包:
yum install -y bzip2-devel
4.2.6、安装protobuf
解压protobuf并进行编译
cd /export/softwares
tar -zxvf protobuf-2.5.0.tar.gz -C ../servers/
cd /export/servers/protobuf-2.5.0
./configure
make && make install 编译同时进行安装
4.2.7、安装snappy
snappy是一种压缩算法,编译的目的是为了让它支持这个snappy压缩
cd /export/softwares/
tar -zxf snappy-1.1.1.tar.gz -C ../servers/
cd ../servers/snappy-1.1.1/
./configure
make && make install
4.2.8、编译hadoop源码
对源码进行编译
cd /export/softwares
tar -zxvf hadoop-2.7.5-src.tar.gz -C ../servers/
cd /export/servers/hadoop-2.7.5
编译支持snappy压缩:
mvn package -DskipTests -Pdist,native -Dtar -Drequire.snappy -e -X
编译完成之后我们需要的压缩包就在下面这个路径里面:
/export/servers/hadoop-2.7.5/hadoop-dist/target
