hadoop核⼼组件概述及hadoop集的搭建
什么是hadoop?
  Hadoop 是 Apache 旗下的⼀个⽤ java 语⾔实现开源软件框架,是⼀个开发和运⾏处理⼤规模数据的软件平台。允许使⽤简单的编程模型在⼤量计算机集上对⼤型数据集进⾏分布式处理。
  hadoop提供的功能:利⽤服务器集,根据⽤户的⾃定义业务逻辑,对海量数据进⾏分布式处理。
  狭义上来说hadoop 指 Apache 这款开源框架,它的核⼼组件有:
1. hdfs(分布式⽂件系统)(负责⽂件读写)
2. yarn(运算资源调度系统)(负责为MapReduce程序分配运算硬件资源)
3. MapReduce(分布式运算编程框架)
扩展:
ant安装包关于hdfs集: hdfs集有⼀个name node(名称节点),类似zookeeper的leader(领导者),namenode记录了⽤户上传的⼀些⽂件分别在哪些DataNode上,记录了⽂件的源信息(就是记录了⽂件的名称和实际对应的物理地址),name node有⼀个公共端⼝默认是9000,这个端⼝是针对客户端访问的时候的,其他的⼩弟(跟随者)叫data node,namenode和datanode会通过rpc进⾏远程通讯。
Yarn集: yarn集⾥的⼩弟叫做node manager,MapReduce程序发给node manager来启动,MapReduce读数据的时候去
hdfs(datanode)去读。(注:hdfs集和yarn集最好放在同⼀台机器⾥),yarn集的⽼⼤主节点resource manager负责资源调度,应(最好)单独放在⼀台机器。
  ⼴义上来说,hadoop通常指更⼴泛的概念--------hadoop⽣态圈。
  当下的 Hadoop 已经成长为⼀个庞⼤的体系,随着⽣态系统的成长,新出现的项⽬越来越多,其中不乏⼀些⾮ Apache 主管的项⽬,这些项⽬对 HADOOP 是很好的补充或者更⾼层的抽象。⽐如:
HDFS:分布式⽂件系统
MAPREDUCE:分布式运算程序开发框架
HIVE:基于 HADOOP 的分布式数据仓库,提供基于 SQL 的查询数据操作
HBASE:基于 HADOOP 的分布式海量数据库
ZOOKEEPER:分布式协调服务基础组件
Mahout:基于 mapreduce/spark/flink 等分布式运算框架的机器学习算法库
Oozie:⼯作流调度框架
Sqoop:数据导⼊导出⼯具(⽐如⽤于 mysql 和 HDFS 之间)
Flume:⽇志数据采集框架
Impala:基于 Hadoop 的实时分析
hadoop特性的优点:
扩容能⼒(Scalable):Hadoop 是在可⽤的计算机集间分配数据并完成计算任务的,这些集可⽤⽅便的扩展到数以千计的节点中。
成本低(Economical):Hadoop 通过普通廉价的机器组成服务器集来分发以及处理数据,以⾄于成本很低。
⾼效率(Efficient):通过并发数据,Hadoop 可以在节点之间动态并⾏的移动数据,使得速度⾮常快。
可靠性(Rellable):能⾃动维护数据的多份复制,并且在任务失败后能⾃动地重新部署(redeploy)计算任务。所以 Hadoop 的按位存储和处理数据的能⼒值得⼈们信赖。
hadoop集搭建准备⼯作:Linux下编译hadoop
  由于从Apache官⽅下载的hadoop 2.X.X的编译版本(binary)为32位,⼩概率不能适应我们的操作系统。另外,在企业中需要对hadoop源码进⾏修改,所以需要⾃⼰处理hadoop源⽂件后再进⾏编译。本⽂以Centos-6.7为例,演⽰编译hadoop-2.9.0。
1、hadoop-2.9.0源⽂件对环境的要求
Requirements:
Unix System
JDK 1.8+
Maven 3.0 or later
Findbugs 1.3.9 (if running findbugs)
ProtocolBuffer 2.5.0
CMake 2.6 or newer (if compiling native code), must be 3.0 or newer on Mac
Zlib devel (if compiling native code)
openssl devel (if compiling native hadoop-pipes and to get the best HDFS encryption performance)
Linux FUSE (Filesystem in Userspace) version 2.6 or above (if compiling fuse_dfs)
Internet connection for first build (to fetch all Maven and Hadoop dependencies)
python (for releasedocs)
bats (for shell code testing)
Node.js / bower / Ember-cli (for YARN UI v2 building)
2、准备的资料
64位linux系统CentOS 6.7。
JDK 1.8。
maven-3.2.5。⼀个项⽬管理综合⼯具, 使⽤标准的⽬录结构和默认构建⽣命周期
protobuf 2.5.0 google的⼀种数据交换的格式,它独⽴于语⾔,独⽴于平台
hadoop-2.9.0-src   
ant-1.9.7将软件编译、测试、部署等步骤联系在⼀起加以⾃动化的⼀个⼯具
3、安装环境
创建三个⽂件夹
#servers为软件安装路径
mkdir -p /export/servers
#software为软件压缩包存放路径
mkdir -p /export/software
#data为软件运⾏产⽣数据的存放路径
mkdir -p /export/hadoopdata
将压缩包全部上传⾄/export/software
yum install lrzsz
cd /export/software
rz
3.1、安装JDK
cd /export/software
tar -zxvf -C /export/servers
cd /export/servers/
mv jdk-jdk-8u111 jdk1.8
vi /etc/profile
#键盘输⼊G调到⽂件末尾,i插⼊
export JAVA_HOME=/export/servers/jdk
export PATH=.:$PATH:$JAVA_HOME/bin
#ESC退出,shift+:,wq!保存
source /etc/profile
命令⾏敲⼊java -version出现如下代码表⽰成功
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)
[root@node0 software]#
3.2、安装maven
cd /export/software
tar -zxvf apache-maven-3.3. -C /export/servers
cd /export/servers/
mv apache-maven-3.3.9 maven
vi /etc/profile
#键盘输⼊G调到⽂件末尾,i插⼊
export MAVEN_HOME=/export/servers/maven
export PATH=.:$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
#ESC退出,shift+:,wq!保存
source /etc/profile
命令⾏敲⼊mvn -version出现如下代码表⽰成功
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00) Maven home: /export/servers/maven
Java version: 1.8.0_111, vendor: Oracle Corporation
Java home: /export/servers/jdk/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "2.6.32-573.el6.x86_64", arch: "amd64", family: "unix"
3.3、安装protobuf
使⽤yum安装需要的C和C++编译环境
yum install gcc
yum install gcc-c++
yum install make
安装protobuf
cd /export/software
tar -zxvf protobuf-2.5. -C /export/servers
cd /export/servers/
mv protobuf-2.5.0 protobuf
cd /protobuf
.
/configure
make
make install
输⼊protoc --version,如果出现如下信息表⽰安装成功
libprotoc 2.5.0
3.4、安装CMake
使⽤yum安装
yum install cmake
yum install openssl-devel
yum install ncurses-devel
3.5、安装ant
cd /export/software
tar -zxvf apache-ant-1.9. -C /export/servers
cd /export/servers/
mv apache-ant-1.9.7 ant
vi /etc/profile
export ANT_HOME=/export/servers/ant
export PATH=.:$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin:$ANT_HOME/bin
source /etc/profile
输⼊ant -version,如果出现如下信息表⽰安装成功
Apache Ant(TM) version 1.9.7 compiled on April 92016
3.6、编译hadoop
cd /export/software
tar -zxvf hadoop-2.9. -C /export/servers
cd /export/servers/hadoop-2.9.0-src
hadoop-2.9.0-src⽬录
输⼊如下命令进⾏编译hadoop-2.9.0
mvn package -Pdist,native -DskipTests -Dtar
或者
mvn  package -DskipTests -Pdist,native
经过漫长的等待,显⽰如下信息,编译完成
进⼊hadoop-dist查看编译好的hadoop-2.9.0
注:maven仓库⽤的是国外的镜像,⼩概率会出现抽风,修改为aliyun镜像
vi /export/servers/maven/l
maven编译hadoop过程中可能会出现[,这个是源码中间存在某些test⽂件,⽽maven仓库不到相应的包。解决:1、使⽤国外的maven仓库。2、修改源码,将test包下的⽂件删除,同时删除响应l中的依赖
终于终于完成了hadoop 的编译!接下来我们继续!
通常我们所说的hadoop集包含 2个集:HDFS 集和 YARN 集,两者逻辑上分离,但物理上常在⼀起。
HDFS 集负责海量数据的存储,集中的⾓⾊主要有:NameNode、DataNode、SecondaryNameNode
YARN 集负责海量数据运算时的资源调度,集中的⾓⾊主要有:ResourceManager、NodeManager
那 mapreduce 是什么呢?它其实是⼀个分布式运算编程框架,是应⽤程序开发包,由⽤户按照编程规范进⾏程序开发,后打包运⾏在HDFS 集上,并且受到 YARN 集的资源调度管理。
Hadoop 部署⽅式分三种,Standalone mode (独⽴模式)、Pseudo-Distributedmode(伪分布式模式)、Cluster mode(集模式),其中前两种都是在单机部署。
独⽴模式⼜称为单机模式,仅 1 个机器运⾏ 1 个 java 进程,主要⽤于调试。
伪分布模式也是在 1 个机器上运⾏ HDFS 的 NameNode 和 DataNode、YARN 的ResourceManger 和 NodeManager,但分别启动单独的java 进程,主要⽤于调试。
集模式主要⽤于⽣产环境部署。会使⽤ N 台主机组成⼀个 Hadoop 集。这种部署模式下,主节点和从节点会分开部署在不同的机器上。
这⾥我们以 3 节点为例进⾏搭建,⾓⾊分配如下:
mini4 NameNode DataNode ResourceManager
mini5 DataNode NodeManager SecondaryNameNode
mini6 DataNode NodeManager
分别启动mini4、mini5、mini6,同步集各机器的时间:
#⼿动同步集各机器时间
date -s "2017-03-03 03:03:03"
yum install ntpdate
#⽹络同步时间
ntpdate p.org
配置  IP 、主机名映射
vi /etc/hosts
192.168.75.14 mini4
192.168.75.15 mini5
192.168.75.16 mini6
配置 ssh免密登录
#⽣成 ssh 免登陆密钥
ssh-keygen -t rsa (四个回车)
执⾏完这个命令后,会⽣成 id_rsa(私钥)、id_rsa.pub(公钥)
将公钥拷贝到要免密登陆的⽬标机器上
ssh-copy-id mini4
ssh-copy-id mini5
ssh-copy-id mini6
关闭防⽕墙
#查看防⽕墙状态
service iptables status
#关闭防⽕墙
service iptables stop
#查看防⽕墙开机启动状态
chkconfig iptables --list
#关闭防⽕墙开机启动
chkconfig iptables off
hadoop  安装包⽬录结构说明:
bin:Hadoop 最基本的管理脚本和使⽤脚本的⽬录,这些脚本是 sbin ⽬录下管理脚本的基础实现,⽤户可以直接使⽤这些脚本管理和使⽤Hadoop。
etc:Hadoop 配置⽂件所在的⽬录,包括 core-site,xml、l、l 等从 Hadoop1.0 继承⽽来的配置⽂件和 l 等Hadoop2.0 新增的配置⽂件。
include:对外提供的编程库头⽂件(具体动态库和静态库在 lib ⽬录中),这些头⽂件均是⽤ C++定义的,通常⽤于 C++程序访问 HDFS 或者编写 MapReduce程序。
lib:该⽬录包含了 Hadoop 对外提供的编程动态库和静态库,与 include ⽬录中的头⽂件结合使⽤。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。