大数据处理架构Hadoop

Hadoop简介

  • Hadoop是Apache软件基金会旗下的一个开源分布式计算平台,为用户提供了系统底层细节透明的分布式基础架构
  • Hadoop是基于Java语言开发的,具有很好的跨平台特性,并且可以部署在廉价的计算机集群中
  • Hadoop的核心是分布式文件系统HDFS(Hadoop Distributed File System)和 MapReduce
  • Hadoop被公认为行业大数据标准开源软件,在分布式环境下提供了海量数据的处理能力
  • 几乎所有主流厂商都围绕Hadoop提供开发工具、开源软件、商业化工具和技术服务,如谷歌、雅虎、微软、思科、淘宝等,都支持Hadoop

Hadoop的特性

Hadoop是一个能够对大量数据进行分布式处理的软件框架,并且是以一种可靠、高效、可伸缩的方式进行处理的,它具有以下几个方面的特性:

  • 高可靠性
  • 高效性
  • 高可扩展性
  • 高容错性
  • 成本低
  • 运行在Linux平台上
  • 支持多种编程语言

Hadoop的应用现状

在这里插入图片描述

Apache Hadoop版本演变

Apache Hadoop版本分为两代,我们将第一代Hadoop称为Hadoop1.0,第二代Hadoop称为Hadoop 2.0

  • 第一代Hadoop包含三个大版本,分别是0.20.x,0.21.x和0.22.x,其中,0.20.x最后演化成1.0.x,变成了稳定版,而0.21.x和0.22.x则增加 了NameNode HA等新的重大特性

  • 第二代Hadoop包含两个版本,分别是0.23.x和2.x,它们完全不同于 Hadoop 1.0,是一套全新的架构,均包含HDFS Federation和YARN两个系统,相比于0.23.x,2.x增加了NameNode HAWire-compatibility两个重大特性

在这里插入图片描述

Hadoop各种版本

在这里插入图片描述

Hadoop项目结构

在这里插入图片描述
在这里插入图片描述

Hadoop的安装与使用(单机/伪分布式)

Hadoop基本安装配置主要包括以下几个步骤:

  • 创建Hadoop用户
  • 更新APT
  • SSH登录权限设置
  • 安装Java环境
  • 单机安装配置
  • 伪分布式安装配置

创建用户

如果安装 Ubuntu 的时候不是用的 “hadoop” 用户,那么需要增加一个名为 hadoop 的用户首先按 ctrl+alt+t 打开终端窗口,输入如下命令创建新用户 :

$ sudo useradd –m hadoop –s /bin/bash

上面这条命令创建了可以登陆的 hadoop 用户,并使用 /bin/bash 作为 shell
接着使用如下命令设置密码,可简单设置为 hadoop,按提示输入两次密码

$ sudo passwd hadoop

可为 hadoop 用户增加管理员权限,方便部署,避免一些对新手来说比较棘手的权限问题:

$ sudo adduser hadoop sudo

更新APT

用 hadoop 用户登录后,我们先更新一下 apt,后续我们使用 apt 安装软件,如果没更新可能有一些软件安装不了。按 ctrl+alt+t 打开终端窗口,执行如下命令:

$ sudo apt-get update

SSH登录权限设置

SSH是什么?
SSH 为 Secure Shell 的缩写,是建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠、专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。 SSH是由客户端和服务端的软件组成,服务端是一个守护进程(daemon),它在后台运行并响应来自客户端的连接请求,客户端包含ssh程序以及像scp(远程拷贝)、slogin(远程登陆)、sftp(安全文件传输)等其他的应用程序

配置SSH的原因:
Hadoop名称节点(NameNode)需要启动集群中所有机器的Hadoop守护进程,这个过程需要通过SSH登录来实现。Hadoop并没有提供SSH输入密码登录的形式,因此,为了能够顺利登录每台机器,需要将所有机器配置为名称节点可以无密码登录它们

Ubuntu默认已安装了SSH客户端,因此,这里还需要安装SSH服务端,

$ sudo apt-get install openssh-server

安装后,可以使用如下命令登录本机

$ ssh localhost

执行该命令后会,会出现“yes/no”选择提示,输入“yes”,然后按提示输入密码hadoop,就登录到本机了。

然后,请输入命令“exit”退出刚才的SSH,就回到了原先的终端窗口;然后,可以利用ssh-keygen生成密钥,并将密钥加入到授权中,命令如下:

$ cd ~/.ssh/        # 若没有该目录,请先执行一次ssh localhost
$ ssh-keygen -t rsa    # 会有提示,都按回车即可
$ cat ./id_rsa.pub >> ./authorized_keys  # 加入授权

此时,再执行ssh localhost命令,无需输入密码就可以直接登录了。

安装Java环境

可以在Ubuntu中直接通过命令安装

$ sudo apt-get install default-jre default-jdk

上述安装过程需要访问网络下载相关文件,请保持联网状态。安装结束以后,需要配置JAVA_HOME环境变量,请在Linux终端中输入下面命令打开当前登录用户的环境变量配置文件.bashrc:

$ vim ~/.bashrc

在文件最前面添加如下单独一行(注意,等号“=”前后不能有空格),然后保存退出:

export JAVA_HOME=/usr/lib/jvm/default-java

接下来,要让环境变量立即生效,请执行如下代码:

$ source ~/.bashrc    # 使变量设置生效

执行上述命令后,可以检验一下是否设置正确:

$ echo $JAVA_HOME     # 检验变量值
$ java -version
$ $JAVA_HOME/bin/java -version  # 与直接执行java -version一样

至此,就成功安装了Java环境。

单机安装配置

Hadoop 2 可以到官网下载,需要下载 hadoop-2.x.y.tar.gz 这个格式的文件,这是编译好的,另一个包含 src 的则是 Hadoop 源代码,需要进行编译才可使用Hadoop 2 安装文件的下载

  • 如果是使用虚拟机方式安装Ubuntu系统的用户,请用虚拟机中的Ubuntu自带
    firefox浏览器访问本指南,再点击下载地址,才能把hadoop文件下载虚拟机ubuntu中。请不要使用Windows系统下的浏览器下载,文件会被下载到Windows系统中,虚拟机中的Ubuntu无法访问外部Windows系统的文件,造成不必要的麻烦。
  • 如果是使用双系统方式安装Ubuntu系统的用户,请进去Ubuntu系统,在Ubuntu 系统打开firefox浏览器,再点击下载
    先进入进入下载目录
$ cd  ~/下载     # 进入下载目录

再下载hadoop软件

选择将 Hadoop 安装至 /usr/local/ 中

$ sudo tar -zxf ~/下载/hadoop-2.7.1.tar.gz -C /usr/local   # 解压到/usr/local中
$ cd /usr/local/
$ sudo mv ./hadoop-2.7.1/ ./hadoop      # 将文件夹名改为hadoop
$ sudo chown -R hadoop ./hadoop       # 修改文件权限

Hadoop解压后即可使用,可以输入如下命令来检查 Hadoop是否可用,成功则会显示 Hadoop版本信息:

$ cd /usr/local/hadoop
$ ./bin/hadoop version

Hadoop 默认模式为非分布式模式(本地模式),无需进行其他配置即可运行

伪分布式安装配置

  • Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件
  • Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-site.xml
  • Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name和 value 的方式来实现

安装步骤:

  • 修改配置文件:core-site.xml,hdfs-site.xml,mapred-site.xml
  • 初始化文件系统hadoop namenode -format
  • 启动所有进程start-all.sh
  • 访问web界面,查看Hadoop信息
  • 运行实例

修改配置文件 core-site.xml

<configuration>
 <property>
 <name>hadoop.tmp.dir</name>
 <value>file:/usr/local/hadoop/tmp</value>
 <description>Abase for other temporary directories.</description>
 </property>
 <property>
 <name>fs.defaultFS</name>
 <value>hdfs://localhost:9000</value>
 </property>
</configuration>
  • hadoop.tmp.dir表示存放临时数据的目录,即包括NameNode的数据,也包括DataNode的数据。该路径任意指定,只要实际存在该文件夹即可
  • name为fs.defaultFS的值,表示hdfs路径的逻辑名称

修改配置文件 hdfs-site.xml

<configuration>
 <property>
 <name>dfs.replication</name>
 <value>1</value>
 </property>
 <property>
 <name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
 </property>
 <property>
 <name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
 </property></configuration>
  • dfs.replication表示副本的数量,伪分布式要设置为1
  • dfs.namenode.name.dir表示本地磁盘目录,是存储fsimage文件的地方
  • dfs.datanode.data.dir表示本地磁盘目录,HDFS数据存放block的地方

关于三种Shell命令方式的区别:

  1. hadoop fs
  2. hadoop dfs
  3. hdfs dfs
  • hadoop fs适用于任何不同的文件系统,比如本地文件系统和HDFS文件系统
  • hadoop dfs只能适用于HDFS文件系统
  • hdfs dfs跟hadoop dfs的命令作用一样,也只能适用于HDFS文件系统

Hadoop集群的部署与使用

Hadoop框架中最核心的设计是为海量数据提供存储的HDFS和对数据进行计算的MapReduceMapReduce的作业主要包括:

  1. 从磁盘或从网络读取数据,即IO密集工作;
  2. 计算数据,即CPU密集工作

Hadoop集群的整体性能取决于CPU、内存、网络以及存储之间的性能平衡。因此运营团队在选择机器配置时要针对不同的工作节点选择合适硬件类型
一个基本的Hadoop集群中的节点主要有

  • NameNode:负责协调集群中的数据存储
  • DataNode:存储被拆分的数据块
  • JobTracker:协调数据计算任务
  • TaskTracker:负责执行由JobTracker指派的任务
  • SecondaryNameNode:帮助NameNode收集文件系统运行的状态信息

SecondaryNameNode在小型集群中可以和NameNode共用一台机器,较大的群集
可以采用与NameNode相同的硬件

集群规模

  • Hadoop集群规模可大可小,初始时,可以从一个较小规模的集群开始,比如包含10个节点,然后,规模随着存储器和计算需求的扩大而扩大

  • 如果数据每周增大1TB,并且有三个HDFS副本,然后每周需要一个额外的3TB作为原始数据存储。要允许一些中间文件和日志(假定30%)的空间,由此,可以算出每周大约需要增加一台新机器。存储两年数据的集群,大约需要100台机器

  • 对于一个小的集群,名称节点(NameNode)和JobTracker运行在单个节点上,通常是可以接受的。但是,随着集群和存储在HDFS中的文件数量的增加,名称节点需要更多的主存,这时,名称节点和JobTracker就需要运行在不同的节点上

  • 第二名称节点(SecondaryNameNode)会和名称节点可以运行在相同的机器上,但是,由于第二名称节点和名称节点几乎具有相同的主存需求,因此,二者最好运行在不同节点上

小结

  • Hadoop被视为事实上的大数据处理标准,本章介绍了Hadoop的发展历程,并阐述了Hadoop的高可靠性、高效性、高可扩展性、高容错性、成本低、运行在Linux平台上、支持多种编程语言等特性
  • Hadoop目前已经在各个领域得到了广泛的应用,雅虎、Facebook、百度、淘宝、网易等公司都建立了自己的Hadoop集群
  • 经过多年发展,Hadoop项目已经变得非常成熟和完善,包括Common、Avro、Zookeeper、HDFS、MapReduce、HBase、Hive、Chukwa、Pig等子项目,其中,HDFS和MapReduce是Hadoop的两大核心组件
  • 本章最后介绍了如何在Linux系统下完成Hadoop的安装和配置,这个部分是后续章节实践环节的基础
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值