目录
Hadoop简介
1.1Hadoop产生的背景
1. HADOOP最早起源于Nutch。Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取、索引、查询等功能,但随着抓取网页数量的增加,遇到了严重的可扩展性问,如何解决数十亿网页的存储和索引问题。
2. 2003年开始谷歌陆续发表的三篇论文为该问题提供了可行的解决方案。
- 分布式文件系统(GFS),可用于处理海量网页的存储
- 分布式计算框架MAPREDUCE,可用于处理海量网页的索引计算问题。
- BigTable 数据库:OLTP 联机事务处理 Online Transaction Processing 增删改,OLAP 联机分析处理 Online Analysis Processing 查询,真正的作用:提供了一种可以在超大数据集中进行实时CRUD操作的功能
3.Nutch的开发人员完成了相应的开源实现HDFS和MAPREDUCE,并从Nutch中剥离成为独立项目HADOOP,到2008年1月,HADOOP成为Apache顶级项目,迎来了它的快速发展期。
1.2 Hadoop的优势
1)高可靠性:因为Hadoop假设计算元素和存储会出现故障,因此它维护多个工作数据副本,在出现故障时可以对失败的节点重新分布处理
2)高扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点。
3)高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度。
4)高容错性:自动保存多份副本数据,并且能够自动将失败的任务重新分配。
1.3 Hadoop组成
1)Hadoop HDFS:一个高可靠、高吞吐量的分布式文件系统。
2)Hadoop MapReduce:一个分布式的离线并行计算框架。
3)Hadoop YARN:作业调度与集群资源管理的框架。
4)Hadoop Common:支持其他模块的工具模块。
1.4.1 YARN架构概述
1)ResourceManager(rm): 处理客户端请求、启动/监控ApplicationMaster、监控NodeManager、资源分配与调度;
2)NodeManager(nm):单个节点上的资源管理、处理来自ResourceManager的命令、处理来自ApplicationMaster的命令;
3)ApplicationMaster:数据切分、为应用程序申请资源,并分配给内部任务、任务监控与容错。
4)Container:对任务运行环境的抽象,封装了CPU、内存等多维资源以及环境变量、启动命令等任务运行相关的信息。
1.4.2 MapReduce架构概述 MapReduce将计算过程分为两个阶段:Map和Reduce
1)Map阶段并行处理输入数据
2)Reduce阶段对Map结果进行汇总
1.4 大数据技术生态体系图
Hadoop生态圈重点组件:
HDFS:Hadoop的分布式文件存储系统。
MapReduce:Hadoop的分布式程序运算框架,也可以叫做一种编程模型。
Hive:基于Hadoop的类SQL数据仓库工具
Hbase:基于Hadoop的列式分布式NoSQL数据库
ZooKeeper:分布式协调服务组件
Mahout:基于MapReduce/Flink/Spark等分布式运算框架的机器学习算法库
Oozie/Azkaban:工作流调度引擎
Sqoop:数据迁入迁出工具
Flume:日志采集工具
获取数据的三种方式
1、自己公司收集的数据--日志 或者 数据库中的数据
2、有一些数据可以通过爬虫从网络中进行爬取
3、从第三方机构购买
Hadoop集群安装
集群规划如下, 一个namenode节点,3个datanode节点
namenode: s1
datanode: s2-s4
linux的集群配置: 参照linux集群的配置
通过secureCRT将jdk,hadoop的安装包上传到linux
安装相应的软件
0. 将要安装的软件的安装包上传至用户home
1. 创建安装目录
mkdir /myoft ; chown centos:centos /mysoft
2.解压安装包到安装目录
tar -zxvf jdk-8u181-linux-x64.tar.gz -C /mysoft
tar -zxvf hadoop-2.7.3.tar.gz -C /mysoft
3.创建软连接
ln -s /mysoft/hadoop-2.7.3 /mysoft/hadoop
ln -s /mysoft/jdk1.8.0_181 /mysoft/jdk
4.设置环境变量
#jdk configuration
export JAVA_HOME=/mysoft/jdk
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
#hadoop configuration
export HADOOP_HOME=/mysoft/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
5.验证安装
java -version
hadoop version
出现上述信息,即为安装成功!
hadoop集群的配置
将配置文件分为三个集群模式的配置
========================================================
local:本地模式
pesudo: 伪分布模式
full: 完全分布模式
cd /mysoft/hadoop/etc
cp -r hadoop local
cp -r hadoop pesudo
cp -r hadoop full
rm -r hadoop
#hadoop在运行时,读取的是hadoop下的配置文件,因此当有多种模式的配置时,需要通过建立软
#连接来切换相应模式的配置文件
ln -s /mysoft/hadoop/etc/full /mysoft/hadoop/etc/hadoop
默认配置文件
core-default.xml --- hadoop-common-2.7.3.jar
hdfs-default.xml---hadoop-hdfs-2.7.3.jar
mapred-default.xml---hadoop-mapreduce-client-core-2.7.3.jar
yarn-default.xml---hadoop-yarn-common-2.7.3.jar
里面有hadoop配置的详细说明,我们在使用时只是配置了一小部分
配置文件
core-site.xml hadoop集群的核心配置
hdfs-site.xml hdfs模块的相关配置
yarn-site.xml yarn模块的相关配置
mapred-site.xml mapreduce模块相关配置
hadoop-env.sh hadoop集群运行环境设置
slaves 告诉hadoop集群哪些节点是从节点
<!-- core-site.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<!-- 指定hdfs的访问地址 -->
<name>fs.defaultFS</name>
<value>hdfs://s1:8020</value>
</property>
<property>
<!-- hadoop 的工作目录 -->
<name>hadoop.tmp.dir</name>
<value>/home/centos/hadoop</value>
</property>
</configuration>
<!-- hdfs-site.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<!-- hdfs文件系统下每个文件块的副本数 -->
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>
<!-- mapred-site.xml -->
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<!-- 在mapreduce计算时使用什么模块来管理 -->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
<!-- yarn-site.xml -->
<?xml version="1.0"?>
<configuration>
<property>
<!-- yarn模块的master节点 -->
<name>yarn.resourcemanager.hostname</name>
<value>s1</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
</configuration>
slaves 文件, 每一行代表了一个节点
s2
s3
s4
ssh免密登陆的设置
================================
#生成ssh密码对
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
#将公密钥拷贝到其他主机
ssh-copy-id centos@s2
ssh-copy-id centos@s3
ssh-copy-id centos@s4
拷贝hadoop的配置文件到其他结点
==========================================
scp -r /mysoft/hadoop/etc/full centos@s2:/mysoft/hadoop/etc/
scp -r /mysoft/hadoop/etc/full centos@s3:/mysoft/hadoop/etc/
scp -r /mysoft/hadoop/etc/full centos@s4:/mysoft/hadoop/etc/
格式化namenode
=============================================
hdfs namenode -format
出现上述信息,即格式化成功!
start-all.sh
启动集群,访问web-ui出现下列参数,即为集群配置成功
==========================================