HADOOP2.6.5(1)及os6集群搭建

目录

Hadoop体系介绍

什么是HADOOP:

HADOOP产生背景

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

离线数据分析流程介绍

需求分析

案例名称

数据来源

数据处理流程

流程图解析

项目技术架构图

项目相关截图

项目最终效果

1. 集群环境准备

1.1 修改主机名

1.3 关闭防火墙

1.4 添加内网域名映射

1.5 同步网络时间

1.6 安装JDK

1.7 克隆虚拟机

1.8 配置SSH免密登录(普通用户)

2.Hadoop分布式集群搭建

2.2.1 集群规划

2.2.2 安装包准备

2.2.3 主要配置文件

配置环境变量 hadoop-env.sh

配置核心组件 core-site.xml

配置文件系统 hdfs-site.xml

配置计算框架 mapred-site.xml

配置文件系统 yarn-site.xml

配置slaves文件

2.2.4分发到从节点

2.2.5配置Hadoop系统环境变量

2.2.6 启动Hadoop集群

初始化文件系统

启动HDFS

启动YARN

查看进程是否启动

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

测试集群是否安装成功

关闭所有服务:


Hadoop体系介绍

什么是HADOOP

Hadoop是一个由Apache基金会所开发的分布式系统基础架构, 是一个存储系统+计算框架的软件框架。

主要解决海量数据存储计算的问题,是大数据技术中的基石。Hadoop以一种可靠、高效、可伸缩的方式进行数据处理,用户可以在不了解分布式底层细节的情况下,开发分布式程序,用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。

HADOOP产生背景

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

Hadoop能解决什么问题

1、海量数据存储

HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(High throughput)来访问数据,适合那些有着超大数据集(large data set)的应用程序,它由n台运行着DataNode的机器组成和1台(另外一个standby)运行NameNode进程一起构成。每个DataNode 管理一部分数据,然后NameNode负责管理整个HDFS 集群的信息(存储元数据)。

2、资源管理,调度和分配

Apache Hadoop YARN(Yet Another Resource Negotiator,另一种资源协调者)是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统和调度平台,可为上层应用提供统 一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨 大好处。

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

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

大数据的一些重点组件:

HDFS:分布式文件系统

MAPREDUCE:分布式运算程序开发框架

HIVE:基于大数据技术(文件系统+运算框架)的SQL数据仓库工具

HBASE:基于HADOOP的分布式海量数据库

ZOOKEEPER:分布式协调服务基础组件

Flume:日志数据采集框架

离线数据分析流程介绍

一个应用广泛的数据分析系统:“web日志数据挖掘”

需求分析

案例名称

网站或APP点击流日志数据挖掘系统

一般中型的网站(10W的PV以上),每天会产生1G以上Web日志文件。大型或超大型的网站,可能每小时就会产生10G的数据量。
具体来说,比如某电子商务网站,在线团购业务。每日PV数100w,独立IP数5w。用户通常在工作日上午1000和下午15:00访问量最大。日间主要是通过PC端浏览器访问,休息日及夜间通过移动设备访问较多。网站搜索浏量占整个网站的80%,PC用户不足1%的用户会消费,移动用户有5%会消费。
对于日志的这种规模的数据,用HADOOP进行日志分析,是最适合不过的了。

案例需求描述

“Web点击流日志”包含着网站运营很重要的信息,通过日志分析,我们可以知道网站的访问量,哪个网页访问人数最多,哪个网页最有价值,广告转化率、访客的来源信息,访客的终端信息等。

数据来源

本案例的数据主要由用户的点击行为记录
获取方式:在页面预埋一段js程序,为页面上想要监听的标签绑定事件,只要用户点击或移动到标签,即可触发ajax请求到后台servlet程序,用log4j记录下事件信息,从而在web服务器(nginx、tomcat等)上形成不断增长的日志文件。
形如:

58.215.204.118 - - [18/Sep/2013:06:51:35 +0000] "GET /wp-includes/js/jquery/jquery.js?ver=1.10.2 HTTP/1.1" 304 0 "http://blog.fens.me/nodejs-socketio-chat/" "Mozilla/5.0 (Windows NT 5.1; rv:23.0) Gecko/20100101 Firefox/23.0"

58.215.204.118 - - [18/Sep/2013:06:51:35 +0000] "GET /wp-includes/js/jquery/jquery.js?ver=1.10.2 HTTP/1.1" 304 0 "http://blog.fens.me/nodejs-socketio-chat/" "Mozilla/5.0 (Windows NT 5.1; rv:23.0) Gecko/20100101 Firefox/23.0"

数据处理流程
流程图解析

整体流程如下:

1)数据采集:定制开发采集程序,或使用开源框架FLUME

2)数据预处理:定制开发mapreduce程序运行于hadoop集群

3)数据仓库技术:基于hadoop之上的Hive

4)数据导出:基于hadoop的sqoop数据导入导出工具

5)数据可视化:定制开发web程序或使用kettle等产品

6)整个过程的流程调度:hadoop生态圈中的oozie工具或其他类似开源产品

项目技术架构图

项目相关截图
  1. Mapreudce程序运行在Hive中查询数据
    1. 将统计结果导入mysql
    2. ./sqoop export --connect jdbc:mysql://localhost:3306/weblogdb --username root --password root  --table t_display_xx  --export-dir /user/hive/warehouse/uv/dt=2014-08-0
    3. ./sqoop export --connect jdbc:mysql://localhost:3306/weblogdb --username root --password root  --table t_display_xx  --export-dir /user/hive/warehouse/uv/dt=2014-08-0
项目最终效果

经过完整的数据处理流程后,会周期性输出各类统计指标的报表,在生产实践中,最终需要将这些报表数据以可视化的形式展现出来,本案例采用web程序来实现数据可视化
效果如下所示:

1. 集群环境准备

1.1 修改主机名

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

vi /etc/sysconfig/network

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

vi /etc/sysconfig/network-scripts/ifcfg-eth0

修改完成之后,按Esc热键进入末行模式,输入“:wq”保存退出。

重启网络服务,使用命令:

service network restart

1.3 关闭防火墙

在root用户下,使用命令:

service iptables stop
chkconfig iptables off  //关闭系统自动登录开启防火墙

 同时关闭selinux:

vi /etc/selinux/config
修改SELINUX=enforcing 成 SELINUX=disabled

1.4 添加内网域名映射

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

vi /etc/hosts

1.5 同步网络时间

ntpdate cn.pool.ntp.org

ntpdate ntp.aliyun.com

后面1.7章节克隆出来的虚拟机也需要做时间同步。ntpdate如果未安装,请使用yum安装。如果yum因为网络无法使用,请移至1.7克隆虚拟机中的网络配置查看。

crontab -e

 

修改时区

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

1.6 安装JDK

检测jdk的安装包

rpm -qa | grep java

如果有进行删除包,输入:

rpm -e  包名 --nodeps

把软件传到 Linux 服务器上去;

准备软件:jdk-8u151-linux-x64.tar.gz

把软件解包解压缩到/home/tom/apps目录下,使用命令:

tar -zxvf jdk-8u151-linux-x64.tar.gz -C /home/tom/apps

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

vim /home/tom/.bash_profile

执行命令让配置文件生效。

source /home/tom/.bash_profile

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

 java –version

1.7 克隆虚拟机

1. 首先将需要克隆的虚拟机关闭,右键单击虚拟机名称“hadoop01”,在下拉列表中选择“管理”,再选择“克隆”:

  1. 点击“克隆”之后,出现如下界面,直接点击“下一步”
  2. 选择默认,直接点击“下一步”:

 

  1. 选择“创建完整克隆”,点击“下一步”:
  1. 修改虚拟机名称,这里我修改为“hadoop02”,点击“浏览”修改虚拟机存放的位置,修改完成点击“完成”即可:

  1. 点击“完成”之后,进入克隆状态,等待克隆完成:

  1. 克隆完成,点击“关闭”:

  1. 这时发现在VMware12的左侧“我的计算机”下,显示克隆完成的虚拟机,因为之前我定义的“虚拟机名称”是“hadoop02”,所以这里显示的也是“hadoop02”:

  1. 因为克隆的虚拟机“hadoop02”与“hadoop01”的所有设置都是完全一模一样的,所以需要修改主机名和IP地址,点击“开启虚拟机”:

  1. 首先,我们来修改网卡名称,进入超级用户root用户下,修改配置文件/etc/udev/rules.d/70-persistent-net.rules,执行以下命令

  1. 进入此配置文件后,发现有两个网卡,第一个红框中的网卡为“hadoop01”的网卡,所以将其删除,将第二个网卡的NAME从“eth1”修改为“eth0”:

  1. 修改完成,如下图所示,之后按Esc热键进入末行模式,输入“:wq”保存退出即可:

  1. 其次,修改网卡的相关配置信息,依旧使用超级用户root,进入/etc/sysconfig/network-scripts/ifcfg-eth0中,如下图所示:

  1. 将红框中的“UUID”、“HWADDR”这两行删掉:

重新分配一个IP地址给“IPADDR”

Gateway的确定需要查看虚拟机外部网段

 在nat设置中将网关ip改成xxx.xxx.xxx.2,虚拟机内部网关来自于此,要对应一致

* 修改完静态ip地址后,会遇到外部ssh链接失败,需要将window的vmnet8修改成和虚拟机同网段

 右键属性,在ipv4中修改配置,IP地址不要使用xxx.xxx.xxx.1

  1. 最后修改一下主机名,进入/etc/sysconfig/network下进行修改,命令如下:
  1. 进入此配置文件后,将“HOSTNAME”修改为“hadoop02”,这个名称可以随意修改,最好不要和之前已存在的虚拟机的主机名一样, 最后按Esc热键进入末行模式,输入“:wq”保存退出即可

  1. 修改完成后,重启虚拟机即可。使用命令“hostname”查看主机名已经修改为“hadoop02”,使用命令“ifconfig”查看网卡名称已经修改为“eth0”,IP地址已经修改为“192.168.186.131”,具体操作如下所示:

 

1.8 配置SSH免密登录(普通用户)

在3台虚拟机开启的情况下,登录hadoop账户,使用命令生成ssh钥匙

ssh-keygen

方式一(建议使用第一种):

登录第一台机器执行ssh-copy-id hadoop01

登录第二台机器执行ssh-copy-id hadoop01

登录第三台机器执行ssh-copy-id hadoop01

登录第一台机器执行ssh-copy-id hadoop02

登录第二台机器执行ssh-copy-id hadoop02

登录第三台机器执行ssh-copy-id hadoop02

登录第一台机器执行ssh-copy-id hadoop03

登录第二台机器执行ssh-copy-id hadoop03

登录第三台机器执行ssh-copy-id hadoop03

方式二:

之后会发现在/home/shiny/.ssh目录下生成了公钥文件;

复制公钥文件到授权列表文件 authorized_keys 中,使用命令:

cp id_rsa.pub authorized_keys

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

chmod 600 ./authorized_keys

将该授权列表文件 authorized_keys 复制到hadoop02和hadoop03上,使用命令:

scp authorized_keys hadoop02:$PWD

scp authorized_keys hadoop03:$PWD

验证免密登录是否设置成功,如下所示:

 

2.Hadoop分布式集群搭建

2.2.1 集群规划

集群规划:准备3台虚拟机,在3个节点上都安装DataNode,设置副本数为2

2.2.2 安装包准备

准备安装包:hadoop-2.6.5-centos-6.7.tar.gz;

上传到 Linux 服务器上去;

把软件解包解压缩到/home/hadoop01/apps目录下,使用命令:

tar  -zxvf  hadoop-2.6.5-centos-6.7.tar.gz -C /home/hadoop01/apps

2.2.3 主要配置文件

配置环境变量 hadoop-env.sh

修改/home/hadoop01/apps/hadoop-2.6.5/etc/hadoop/目录下的环境变量文件hadoop-env.sh,配置JDK的路径

export JAVA_HOME=/home/hadoop01/jdk1.8.0_151
配置核心组件 core-site.xml

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

<property>

<name>fs.defaultFS</name>

<value>hdfs://hadoop01:9000</value>

</property>

<property>

<name>hadoop.tmp.dir</name>

<value>/home/hadoop01/hadoopData/temp</value>

</property>
配置文件系统 hdfs-site.xml

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

<property>

<name>dfs.namenode.name.dir</name>

<value>/home/hadoop01/hadoopData/name</value>

</property>

<property>

<name>dfs.datanode.data.dir</name>

<value>/home/hadoop01/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.resourcemanager.address</name>

            <value>hadoop01:8032</value>

        </property>

        <property>

            <name>yarn.resourcemanager.webapp.address</name>

            <value>hadoop01:8088</value>

        </property>

        <property>

            <name>yarn.resourcemanager.scheduler.address</name>

            <value>hadoop01:8030</value>

        </property>

        <property>

            <name>yarn.resourcemanager.resource-tracker.address</name>

            <value>hadoop01:8031</value>

        </property>

        <property>

            <name>yarn.resourcemanager.admin.address</name>

            <value>hadoop01:8033</value>

        </property>

        <property>

            <!--NodeManager获取数据的方式-->

            <name>yarn.nodemanager.aux-services</name>

            <value>mapreduce_shuffle</value>

        </property>

        <property>

            <!--开启日志聚集功能-->

            <name>yarn.log-aggregation-enable</name>

            <value>true</value>

        </property>

        <property>

            <!--配置日志保留7天-->

            <name>yarn.log-aggregation.retain-seconds</name>

            <value>604800</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  /home/hadoop01/.bash_profile

export HADOOP_HOME=/home/hadoop01/hadoop-2.6.5

export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

让配置文件立即生效,使用命令:

source  /home/hadoop01/.bash_profile

2.2.6 启动Hadoop集群

初始化文件系统

该操作需要在主节点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://192.168.186.130:50070 

查看MapReduce运行状态信息是否正常,web管理界面地是 http://192.168.186.130:8088

请更换自己的ip地址,本地访问不到请关闭虚拟机防火墙

测试集群是否安装成功

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

hadoop fs -ls /

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

cd /home/hadoop01/hadoop-2.6.5/share/hadoop/mapreduce

hadoop jar hadoop-mapreduce-examples-2.6.5.jar pi 2 2

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

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
关闭所有服务:
$ hadoop-2.6.5/sbin/stop-all.sh

  • 16
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.房东的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值