一、数据是什么
指无法在一定时间内用常规软件工具进行捕捉,管理和处理的数据集合,是需要新型处理模式才能具有更强的决策力、发现力和流程优化能力的海量、高增长率和多样化的信息资产。
主要解决海量数据的存储和海量数据的分析计算问题
特点:大量、高速、多样、低价值密度
二、Hadoop框架讨论大数据生态
2.1什么是hadoop
1) Hadoop是一个由 Apache 基金会所开发的分布式系统基础架构,它可以使用户在不了解分布式底层细节的情況下开发分布式程序,充分利用集群的威力进行高速运算和存储。
2) 主要解决:海量数据存储和海量数据的分析计算问题
3) 广义hadoop指hadoop生态圈
2.2hadoop的发行版
Hadoop三大发行版本:Apache、Cloudera、Hortonworks。
Apache版本最原始(最基础)的版本,对于入门学习最好。(开源版)
Cloudera在大型互联网企业中用的较多。(一键搭建)
Hortonworks文档较好。
2.3hadoop优势
1)高可靠性:hadoop底层维护多个数据副本。
2)高扩展性:在集群上分配任务数据,方便扩展更多节点。
3)高效性性:在MapReduce的思想下,hadoop是平行工作的,以加快任务处理的速度。
4)高容错性:能够将出错的任务重新分配
2.4hadoop的组成
1)hadoop1.x
Mapreduce(计算加资源调度)
Hdfs(数据存储)
Common(辅助工具)
2)Hadoop2.x
MapReduce(计算)
Yarn(资源调度)
HDFS(数据存储)
Common(辅助工具)
2.5hdfs架构
1)组成
Namenode:存储文件的元数据,以及每个文件的块列表和块所在的DataNode等
Datanode:在本地文件系统存储文件的块数据以及块数据的校验。
Secondary NameNode:用来监控HDFS状态的辅助后台程序,每隔一段时间记录hdfs元数据的快照。
2.6yarn架构
(1) ResourceManager(RM)(一个集群只有一个)
1. 处理客户端的资源请求
2. 监控nodemanager
3.启动或监控
4. 资源的分配与调度
(2) NodeManager(NM)
1. 管理单个节点上的资源
2. 处理来自ResourceManager的命令
3. 处理来自ApplicationManager的命令
(3) ApplicationManager(AM)
1. 负责数据的切分
2. 为应用程序申请资源并分配给内部的任务
3. 任务的监控与容错
(4) Container
Container是yarn中资源的抽象,它封装了某个节点上的多维度资源。
Yarn架构
2.7MapReduce框架概述
MapReduce分为两个阶段:Map和Reduce
(1) Map:并行处理输入数据
(2) Reduce:对Map结果进行汇总
2.8大数据生态系统
图中涉及的技术名词解释如下:
1)Sqoop:Sqoop是一款开源的工具,主要用于在Hadoop、Hive与传统的数据库(MySql)间进行数据的传递,可以将一个关系型数据库(例如 :MySQL,Oracle等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
2)Flume:Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
3)Kafka:Kafka是一种高吞吐量的分布式发布订阅消息系统,有如下特性:
(1)通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。
(2)高吞吐量:即使是非常普通的硬件Kafka也可以支持每秒数百万的消息。
(3)支持通过Kafka服务器和消费机集群来分区消息。
(4)支持Hadoop并行数据加载。
4)Storm:Storm用于“连续计算”,对数据流做连续查询,在计算时就将结果以流的形式输出给用户。
5)Spark:Spark是当前最流行的开源大数据内存计算框架。可以基于Hadoop上存储的大数据进行计算。
6)Oozie:Oozie是一个管理Hdoop作业(job)的工作流程调度管理系统。
7)Hbase:HBase是一个分布式的、面向列的开源数据库。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。
8)Hive:Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
10)R语言:R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。
11)Mahout:Apache Mahout是个可扩展的机器学习和数据挖掘库。
12)ZooKeeper:Zookeeper是Google的Chubby一个开源的实现。它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、 分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
三、hadoop集群配置
3.1关闭防火墙
启动:systemctl start firewalld
关闭:systemctl stop firewalld
查看状态:systemctl status firewalld
永久禁用:systemctl disable firewalld
永久启用:systemctl enable firewalld
3.2配置hosts
vim /etc/hosts
ip主机名
.......
3.3免密登录
ssh-keygen -t rsa
ssh-copy-id hadoop01
#注意各个机器都要免密
3.4时间同步
时间同步的方式:找一个机器,作为时间服务器,所有的机器与这台集群时间进行定时的同步,比如,每隔十分钟,同步一次时间。
1. 时间服务器配置(root用户)
(1)检查ntp是否安装
rpm -qa|grep ntp
(2)查看ntp状态
service ntpd status
(3)如果是开启状态则关闭
service ntpd stop
(4)修改配置vim /etc/ntp.conf
以下四行代码注释掉
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
添加以下内容
server 127.127.1.0
fudge 127.127.1.0 stratum 10
(当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步)
(5)修改/etc/sysconfig/ntpd文件
增加内容如下(让硬件时间与系统时间一起同步)
SYNC_HWCLOCK=yes
(6)重新启动ntpd服务,开机自启
service ntpd start
chkconfig ntpd on
2. 其他机器配置
(1)在其他机器配置10分钟与时间服务器同步一次
crontab -e
编写定时任务如下:
*/10 * * * * /usr/sbin/ntpdate hadoop102
3.5创建用户
1. 创建hadoop用户
useradd hadoop
passwd hadoop
2.设置hadoop用户sudo免密权限,执行visudo命令,添加以下内容
hadoop ALL=(ALL) NOPASSWD:ALL
保存时wq!强制保存
3.6安装Java和Hadoop,并配置环境变量,并分发到集群其他机器
3.7hadoop的配置
1. 配置hadoop-env.sh,yarn-env.sh,mapred-env.sh文件
添加JAVA_HOME
在每个文件第二行添加export JAVA_HOME=
2.配置Core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop01:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
3. 配置hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop03:50090</value>
</property>
4.配置yarn-site.xml
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop02</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
5. 配置mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop03:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop03:19888</value>
</property>
启动历史服务器:mr-jobhistory-daemon.sh start historyserver
6. 配置Slaves指定datanode
hadoop01
hadoop02
hadoop03
7.分发配置文件到其他机器
scp -r
8. 格式化Namenode在hadoop01
hdfs namenode -format
3.8hadoop集群的启动
1.启动hdfs
start-dfs.sh
2. 在配置了Resourcemanager机器上执行
start-yarn.sh