Hadoop

Hadoop体系介绍

什么是HADOOP

  1. HADOOP是apache旗下的一套开源软件平台
  2. HADOOP提供的功能:利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理
  3. HADOOP的核心组件有
    A.HDFS(分布式文件系统)存文件
    B.MAPREDUCE(分布式运算编程框架)计算
    C.YARN(运算资源调度系统)
  4. 广义上来说,HADOOP通常是指一个更广泛的概念——HADOOP生态圈

HADOOP产生背景

  1. HADOOP最早起源于Nutch。Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取、索引、查询等功能,但随着抓取网页数量的增加,遇到了严重的可扩展性问题——如何解决数十亿网页的存储和索引问题。
  2. 2003年、2004年谷歌发表的两篇论文为该问题提供了可行的解决方案。 分布式文件系统(GFS),可用于处理海量网页的存储 分布式计算框架MAPREDUCE,可用于处理海量网页的索引计算问题。
  3. Nutch的开发人员完成了相应的开源实现HDFS和MAPREDUCE,并从Nutch中剥离成为独立项目HADOOP,到2008年1月,HADOOP成为Apache顶级项目,迎来了它的快速发展期

HADOOP在大数据、云计算中的位置和关系

  1. 云计算是分布式计算、并行计算、网格计算、多核计算、网络存储、虚拟化、负载均衡等传统计算机技术和互联网技术融合发展的产物。借助IaaS(基础设施即服务)、PaaS(平台即服务)、SaaS(软件即服务)等业务模式,把强大的计算能力提供给终端用户。
  2. 现阶段,云计算的两大底层支撑技术为“虚拟化”和“大数据技术”
  3. 而HADOOP则是云计算的PaaS层的解决方案之一,并不等同于PaaS,更不等同于云计算本身。

HADOOP生态圈以及各组成部分的简介

在这里插入图片描述

重点组件:
HDFS:分布式文件存储系统
MAPREDUCE:分布式运算程序开发框架
HIVE:基于大数据技术(文件系统+运算框架)的SQL数据仓库工具
HBASE:基于HADOOP的分布式海量数据库
ZOOKEEPER:分布式协调服务基础组件
Mahout:基于mapreduce/spark/flink等分布式运算框架的机器学习算法库
Oozie:工作流调度框架(类似于kettle)
Sqoop:数据导入导出工具
Flume:日志数据采集框架

数据处理流程

流程图解析
整体流程如下:
在这里插入图片描述
1)数据采集:定制开发采集程序,或使用开源框架FLUME
2)数据预处理:定制开发mapreduce程序运行于hadoop集群
3)数据仓库技术:基于hadoop之上的Hive
4)数据导出:基于hadoop的sqoop数据导入导出工具
5)数据可视化:定制开发web程序或使用kettle等产品
6)整个过程的流程调度:hadoop生态圈中的oozie工具或其他类似开源产品

1. 集群环境准备

1.1 修改主机名

在超级管理员root用户下,修改主机名,使用命令:

1.[root@hadoop01 ~] # vim /etc/sysconfig/network

在这里插入图片描述

2.[root@hadoop01 ~] # vim /etc/hostname

在这里插入图片描述

1.2 配置IP地址

在root用户下,对配置文件进行如下修改,使用命令:

[root@hadoop01 ~] # vim /etc/sysconfig/network-scripts/ifcfg-ens33

在这里插入图片描述
修改完成之后,按Esc热键进入末行模式,输入“:wq”保存退出。
重启网络服务,使用命令:

[root@hadoop01 ~] # service network restart

1.3 关闭防火墙

在root用户下,使用命令:

[root@hadoop01 ~] # service firewalld stop
[root@hadoop01 ~] # systemctl disalbe firewalld

1.4 添加内网域名映射

在root用户下,修改配置文件,使用命令:

[root@hadoop01 ~] # vim /etc/hosts

在这里插入图片描述

1.5 同步网络时间

[root@hadoop01 ~] # ntpdate cn.pool.ntp.org

1.6 安装JDK

准备软件:jdk-8u151-linux-x64.tar.gz
把软件传到 Linux 服务器上去;
把软件解包解压缩到/home/tom/apps目录下,使用命令:

[root@hadoop01 ~] # tar -zxvf jdk-8u151-linux-x64.tar.gz -C /home/tom/apps

配置环境变量,使用命令:

[root@hadoop01 ~] # vim ~/.bashrc

执行source ~/.bashrc命令让配置文件生效。

[root@hadoop01 ~] # source ~/.bashrc

检测 JDK 是否安装成功,使用命令:

[root@hadoop01 ~] # java –version

1.7 配置SSH免密登录(root用户)

在3台虚拟机开启的情况下,使用命令:

[root@hadoop01 ~] # ssh-keygen

之后会发现在~/.ssh目录下生成了公钥文件;
先进入id_rsa.pub所在的目录
在这里插入图片描述
复制公钥文件到授权列表文件 authorized_keys 中,使用命令:

[root@hadoop01 .ssh] # cp id_rsa.pub authorized_keys

修改授权列表文件权限,使用命令:

[root@hadoop01 .ssh] # chmod 600 ./authorized_keys

先进入家目录
将该授权列表文件 .ssh 复制到hadoop02和hadoop03上,使用命令:

[root@hadoop01 ~] # scp .ssh hadoop02:$PWD
[root@hadoop01 ~] # scp .ssh hadoop03:$PWD

验证免密登录是否设置成功,如下所示:
在这里插入图片描述

2.Hadoop分布式集群搭建

2.2.1 集群规划

集群规划:准备3台虚拟机,在3个节点上都安装DataNode,设置副本数为2
在这里插入图片描述

2.2.2 安装包准备

准备安装包:hadoop-2.6.5-centos-6.7.tar.gz;
上传到 Linux 服务器上去;
把软件解包解压缩到/gs目录下,使用命令:

[root@hadoop01 ~] # tar -zxvf hadoop-2.6.5-centos-6.7.tar.gz -C /gs

2.2.3 主要配置文件

配置环境变量 hadoop-env.sh

环境变量文件hadoop-env.sh中,只需要配置JDK的路径

export JAVA_HOME=java的主目录

配置核心组件 core-site.xml

将下面的代码添加到<configuration></configuration>中间:

<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop01:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/tom/hadoopData/temp</value>
</property>

配置文件系统 hdfs-site.xml

将下面的代码加入<configuration></configuration>中间:

<property>
<name>dfs.namenode.name.dir</name>
<value>/home/tom/hadoopData/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/tom/hadoopData/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.secondary.http.address</name>
<value>hadoop02:50090</value>
</property>

配置计算框架 mapred-site.xml

复制文件,因为目录下有mapred-site.xml.template

cp mapred-site.xml.template mapred-site.xml

将下面的代码加入<configuration></configuration>中间:

<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

配置文件系统 yarn-site.xml

将下面的代码加入<configuration></configuration>中间:

<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop01</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

配置slaves文件

将内容修改为:
hadoop01
hadoop02
hadoop03

2.2.4分发到从节点

分别分发到从节点hadoop02和hadoop03上,使用命令:

scp -r /home/hadoop01/apps/hadoop-2.6.5 hadoop02:$PWD
scp -r /home/hadoop01/apps/hadoop-2.6.5 hadoop03:$PWD

2.2.5配置Hadoop系统环境变量

需要在三个节点上都进行配置,使用命令:

vim ~/.bashrc
在这里插入图片描述

刷新一下让配置文件立即生效,使用命令:

[root@hadoop01 ~] # source ~/.bashrc

2.2.6 启动Hadoop集群

先关所有服务器的防火墙,避免通讯失败

service firewalld stop
systemctl disable firewalld

初始化文件系统
该操作需要在主节点hadoop01上执行,使用命令:

hadoop namenode -format

看到下图的打印信息表示初始化成功,如果出现Exception/Error,则表示出问题:
在这里插入图片描述

启动HDFS

使用命令:

start-dfs.sh

结果:
在主节点hadoop01上启动了NameNode守护进程
在3个节点上都启动了DataNode守护进程
在配置的一个特定节点hadoop02上启动SecondaryNameNode 进程
在这里插入图片描述

启动YARN

使用命令:

start-yarn.sh

结果:
在主节点hadoop01上启动了ResourceManager守护进程
在3个节点上都启动了NodeManager守护进程
在这里插入图片描述

查看进程是否启动

在hadoop01的终端执行jps命令,在打印结果中会看到5个进程,分别是:
ResourceManager
NodeManager
Jps
DataNode
NameNode
如果出现了这5个进程表示主节点进程启动成功。如下图所示:
在这里插入图片描述
在hadoop02的终端执行jps命令,在打印结果中会看到4个进程,分别是:
NodeManager
Jps
SecondaryNameNode
DataNode
如果出现了这4个进程表示从节点进程启动成功。如下图所示:
在这里插入图片描述
在hadoop03的终端执行jps命令,在打印结果中会看到3个进程,分别是:
Jps、
NodeManager
DataNode
如果出现了这3个进程表示从节点进程启动成功。如下图所示:
在这里插入图片描述

Web UI查看集群是否成功启动

查看HDFS集群信息是否正常,web管理界面地址是 http://IP地址:50070
查看MapReduce运行状态信息是否正常,web管理界面地址 是 http://IP地址:8088

测试集群是否安装成功

检测HDFS是否成功启动,使用命令:

hadoop fs -ls /

检测YARN集群是否启动成功,使用提交MapReduce例子程序的方法进行测试,使用命令:

cd /usr/hadoop/hadoop-2.6.5/share/hadoop/mapreduce
hadoop jar hadoop-mapreduce-examples-2.6.5.jar pi 10 10

注:若是第一次有的进程没有启动成功,可以使用单步启动,使用命令:

hadoop-daemon.sh start datanode

hadoop-daemon.sh start namenode

hadoop-daemon.sh start secondarynamenode

yarn-daemon.sh start nodemanager

yarn-daemon.sh start resourcemanager

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值