大数据 -- Hadoop集群环境搭建

首先我们来认识一下HDFS, HDFS(Hadoop Distributed File System )Hadoop分布式文件系统。它其实是将一个大文件分成若干块保存在不同服务器的多个节点中。通过联网让用户感觉像是在本地一样查看文件,为了降低文件丢失造成的错误,它会为每个小文件复制多个副本(默认为三个),以此来实现多机器上的多用户分享文件和存储空间。

Hadoop主要包含三个模块:

  • HDFS模块:HDFS负责大数据的存储,通过将大文件分块后进行分布式存储方式,突破了服务器硬盘大小的限制,解决了单台机器无法存储大文件的问题,HDFS是个相对独立的模块,可以为YARN提供服务,也可以为HBase等其他模块提供服务。
  • YARN模块:YARN是一个通用的资源协同和任务调度框架,是为了解决Hadoop中MapReduce里NameNode负载太大和其他问题而创建的一个框架。YARN是个通用框架,不止可以运行MapReduce,还可以运行Spark、Storm等其他计算框架。
  • MapReduce模块:MapReduce是一个计算框架,它给出了一种数据处理的方式,即通过Map阶段、Reduce阶段来分布式地流式处理数据。它只适用于大数据的离线处理,对实时性要求很高的应用不适用。多相关信息可以参考博客:初识HDFS(10分钟了解HDFS、NameNode和DataNode)

本节将会介绍Hadoop集群的配置,目标主机我们可以选择虚拟机中的多台主机或者多台阿里云服务器。

注意:以下所有操作都是在root用户下执行的,因此基本不会出现权限错误问题。

一、Vmware安装

VMware虚拟机有三种网络模式,分别是Bridged(桥接模式)、NAT(网络地址转换模式)、Host-only(主机模式):

  • 桥接:选择桥接模式的话虚拟机和宿主机在网络上就是平级的关系,相当于连接在同一交换机上;
  • NAT:NAT模式就是虚拟机要联网得先通过宿主机才能和外面进行通信;
  • 仅主机:虚拟机与宿主机直接连起来。

具体区别可以参考博客:Vmware虚拟机下三种网络模式配置

VMware Workstation Pro 15中文破解版下载地址:http://www.zdfans.com/html/16025.html,参考安装破解教程进行安装。

二、CentOS安装

CentOS7下载地址;http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso

在Vmware中安装CentOS7的步骤可以参考博客:VMware安装Centos7超详细过程(图文)(包含克隆模式)。

1、网络模式配置为桥接模式,CentOS7网络IP配置参考博客:Centos7虚拟机桥接模式设置静态ip

2、配置主机名

vi  /etc/sysconfig/network

3、配置Host

 vi /etc/hosts

4、关闭防火墙和selinux

service iptables stop
vim /etc/sysconfig/selinux

三 阿里云服务器环境搭建

如果可以申请到阿里云服务器推荐使用阿里云服务器,这里申请的时CentOS 7.2,相关步骤可以参考博客:大数据 -- zookeeper和kafka集群环境搭建第一节。

查看防火墙状态:

systemctl status firewalld

如果时开启,需要利用命令将防火墙关闭:

systemctl stop firewalld
systemctl disable firewalld

四 安装JDK

JDK安装可以参考博客大数据 -- zookeeper和kafka集群环境搭建第二节。

五 伪分布式安装

Hadoop部署模式主要有:本地模式、伪分布模式、完全分布式模式、HA完全分布式模式。

区分的依据是NameNode、DataNode、ResourceManager、NodeManager等模块运行在几个JVM进程、几个机器。

模式名称 各个模块占用的JVM进程数 各个模块运行在几个机器数上
本地模式 1个 1个
伪分布式模式 N个 1个
完全分布式模式 N个 N个
HA完全分布式 N个 N个

下面我选择将Hadoop伪分布式模式安装在阿里云服务器zy1主机上。伪分布式模式可以看作是完全分布式,但是跑在一个节点上,所有的进程都配置在一个节点上,拥有分布式文件系统,只不过这个系统只有一个节点。

1、下载并解压

wget http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.8.5/hadoop-2.8.5.tar.gz
tar -zxvf hadoop-2.8.5.tar.gz -C /opt/bigdata

重新命名:

mv hadoop-2.8.5 hadoop

2、 配置Hadoop环境变量

vim /etc/profile

追加配置:

export HADOOP_HOME=/opt/bigdata/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

使配置生效:

. /etc/profile

3、验证HADOOP_HOME参数

echo $HADOOP_HOME

4、 配置 hadoop-env.shJAVA_HOME参数

修改hadoop-env.sh:

vim  ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh

修改JAVA_HOME参数为:

export JAVA_HOME=/usr/lib/jvm/java

5、配置core-site.xml

vim ${HADOOP_HOME}/etc/hadoop/core-site.xml

添加内容如下:

<configuration>
    <property>
       <name>fs.defaultFS</name>
       <value>hdfs://zy1:9000</value>
    </property>
    <property>
       <name>hadoop.tmp.dir</name>
      <value>/opt/bigdata/data/hadoop</value>
    </property>
</configuration>     
  • fs.defaultFS:配置的是HDFS的目录;
  • hadoop.tmp.dir:配置的是Hadoop临时目录,比如HDFS的NameNode数据默认都存放这个目录下,查看*-default.xml等默认配置文件,就可以看到很多依赖${hadoop.tmp.dir}的配置。默认的hadoop.tmp.dir/tmp/hadoop-${user.name},此时有个问题就是NameNode会将HDFS的元数据存储在这个/tmp目录下,如果操作系统重启了,系统会清空/tmp目录下的东西,导致NameNode元数据丢失,是个非常严重的问题,所有我们应该修改这个路径。

创建临时目录:

mkdir -p /opt/bigdata/data/hadoop

6、配置hdfs-site.xml:

vim ${HADOOP_HOME}/etc/hadoop/hdfs-site.xml

添加内容如下:

<configuration>
 <property>
       <name>dfs.replication</name>
       <value>1</value>
    </property>
</configuration>

dfs.replication配置的是HDFS存储时的备份数量,因为这里是伪分布式环境只有一个节点,所以这里设置为1。

7、格式化HDFS:

hdfs namenode -format

注意:如果格式化成功了,不可以再继续格式化,如果想继续格式化可以参考Hadoop1重新格式化HDFS。如果没有格式化成功,需要一直格式化。

格式化后,查看core-site.xml里hadoop.tmp.dir(本例是/opt/bigdata/data/hadoop目录)指定的目录下是否有了dfs目录,如果有,说明格式化成功。

ll /opt/bigdata/data/hadoop

其中/opt/bigdata/data/hadoop/dfs/name/current下文件如下:

  • fsimage是NameNode元数据在内存满了后,持久化保存到的文件;
  • fsimage*.md5 是校验文件,用于校验fsimage的完整性;
  • seen_txid 是hadoop的版本;
  • vession文件里保存:namespaceID:NameNode的唯一ID。clusterID:集群ID,NameNode和DataNode的集群ID应该一致,表明是一个集群。

8、启动NameNode

hadoop-daemon.sh start namenode

9、启动DataNode

hadoop-daemon.sh start datanode

10、 启动SecondaryNameNode

hadoop-daemon.sh start secondarynamenode

11、JPS命令查看是否已经启动成功,有结果就是启动成功了

jps

12、HDFS上测试创建目录、上传、下载文件

HDFS上创建目录:

hdfs dfs -mkdir /demo1

上传本地文件到HDFS上:

hdfs dfs -put  ${HADOOP_HOME}/etc/hadoop/core-site.xml /demo1

读取HDFS上的文件内容:

hdfs dfs -cat /demo1/core-site.xml

从HDFS上下载文件到本地:

hdfs dfs -get /demo1/core-site.xml

更多hdfs文件系统的命令可以查看:

hdfs  dfs

13、配置mapred-site.xml

默认没有mapred-site.xml文件,但是有个mapred-site.xml.template配置模板文件。复制模板生成mapred-site.xml:

cd /opt/bigdata/hadoop/
cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml

添加配置

vim etc/hadoop/mapred-site.xml

指定mapreduce运行在yarn框架上。

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

14、配置yarn-site.xml

vim etc/hadoop/yarn-site.xml

yarn.nodemanager.aux-services配置了yarn的默认混洗方式,选择为mapreduce的默认混洗算法。

yarn.resourcemanager.hostname指定了Resourcemanager运行在哪个节点上。

<configuration>

<!-- Site specific YARN configuration properties -->
 <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
   </property>
   <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>zy1</value>
   </property>
</configuration>

15、启动Resourcemanager

yarn-daemon.sh start resourcemanager

16、 启动nodemanager

yarn-daemon.sh start nodemanager

17、查看是否启动成功

可以看到ResourceManager、NodeManager已经启动成功了。

18、YARN的Web页面

YARN的Web客户端端口号是8088,通过http://106.15.74.155:8088/可以查看当前执行的job。

注意:由于使用到了8088端口。需要在阿里云中配置入规则,具体可以参考阿里云官方收藏:同一个地域、不同账号下的实例实现内网互通

19、hdfs的web页面

hdfs的Web客户端端口号是50070,通过http://106.15.74.155:50070/可以查看。

20、运行MapReduce Job

在Hadoop的share目录里,自带了一些jar包,里面带有一些mapreduce实例小例子,位置在share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar,可以运行这些例子体验刚搭建好的Hadoop平台,我们这里来运行最经典的WordCount实例。

在hdfs文件系统上创建测试用的Input文件:

hdfs dfs -mkdir -p /wordcountdemo/input

创建原始文件:

在本地/opt/bigdata/data/hadoop目录创建一个文件wc.input,vim /opt/bigdata/data/hadoop/wc.input内容如下:

doop mapreduce hive
hbase spark storm
sqoop hadoop hive
spark hadoop

将wc.input文件上传到HDFS的/wordcountdemo/input目录中:

hdfs dfs -put /opt/bigdata/data/hadoop/wc.input /wordcountdemo/input

运行WordCount MapReduce Job:

cd /opt/bigdata/hadoop
yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar wordcount /wordcountdemo/input  /wordcountdemo/output

注意:如果执行一直卡在map 0% reduce 0%,可能是由于硬件配置较低的原因:

更多错误可以查看日志:$HADOOP_HOME/logs:

 more $HADOOP_HOME/logs/yarn-root-nodemanager-zy1.log
 more $HADOOP_HOME/logs/yarn-root-resourcemanager-zy1.log

如果运行成功,查看输出结果目录:

hdfs dfs -ls /wordcountdemo/output

output目录中有两个文件:

  • _SUCCESS文件是空文件,有这个文件说明Job执行成功。
  • part-r-00000文件是结果文件,其中-r-说明这个文件是Reduce阶段产生的结果,mapreduce程序执行时,可以没有reduce阶段,但是肯定会有map阶段,如果没有reduce阶段这个地方有是-m-。一个reduce会产生一个part-r-开头的文件。

查看输出文件内容:

hdfs dfs -cat /wordcountdemo/output/part-r-00000

结果是按照键值排好序的。

21、停止Hadoop

hadoop-daemon.sh stop namenode
hadoop-daemon.sh stop datanode
hadoop-daemon.sh stop secondarynamenode
yarn-daemon.sh stop resourcemanager
yarn-daemon.sh stop nodemanager

22、开启历史服务

Hadoop开启历史服务可以在web页面上查看Yarn上执行job情况的详细信息。可以通过历史服务器查看已经运行完的Mapreduce作业记录,比如用了多少个Map、用了多少个Reduce、作业提交时间、作业启动时间、作业完成时间等信息。

mr-jobhistory-daemon.sh start historyserver

开启后,可以通过Web页面查看历史服务器:http://106.15.74.155:19888/

23、开启日志聚集

MapReduce是在各个机器上运行的,在运行过程中产生的日志存在于各个机器上,为了能够统一查看各个机器的运行日志,将日志集中存放在HDFS上,这个过程就是日志聚集。

Hadoop默认是不启用日志聚集的。在yarn-site.xml文件里配置启用日志聚集。

<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
 </property>
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>106800</value>
 </property>  

yarn.log-aggregation-enable:是否启用日志聚集功能。

yarn.log-aggregation.retain-seconds:设置日志保留时间,单位是秒。

重启Yarn进程:

stop-yarn.sh
start-yarn.sh

重启HistoryServer进程:

mr-jobhistory-daemon.sh stop historyserver
mr-jobhistory-daemon.sh start historyserver

测试日志聚集:运行一个demo MapReduce,使之产生日志:

yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar wordcount /wordcountdemo/input  /wordcountdemo/output

运行Job后,就可以在历史服务器Web页面查看各个Map和Reduce的日志了。

参考文章

[1]史上最详细的Hadoop环境搭建

[2]阿里云hadoop安装教程_完全分布式_Hadoop 2.7.4/CentOS 7.4

[3]hadoop 阿里云伪分布式配置

原文地址:https://www.cnblogs.com/zyly/p/11209286.html

时间: 2024-10-15 04:59:28

大数据 -- Hadoop集群环境搭建的相关文章

大数据——Hadoop集群坏境CentOS安装

前言 前面我们主要分析了搭建Hadoop集群所需要准备的内容和一些提前规划好的项,本篇我们主要来分析如何安装CentOS操作系统,以及一些基础的设置,闲言少叙,我们进入本篇的正题. 技术准备 VMware虚拟机.CentOS 6.8 64 bit 安装流程 因为我的笔记本是Window7操作系统,然后内存配置,只有8G,内存配置太低了,当然为了演示,我会将Hadoop集群中的主节点分配2GB内存,然后剩余的三个节点都是1GB配置. 所有的节点存储我都设置为50GB. 在安装操作系统之前,我们需要

Hadoop集群环境搭建

(1).在虚拟机中设置静态主机IP ①.获取当前IP地址的网段②.子网掩码以及网关 ③.在虚拟机外部将其Ping通 (2).修改主机名 临时修改 hostname 主机名称 永久修改 sudo vi /etc/sysconfig/network 文件 修改hostname属性 (权限不够时可以通过su root -->sudo vi /etc/sudoers添加权限,如下) (3).关闭防火墙 查看防火墙运行状态 sudo service iptables status 临时关闭防火墙 sudo

Hadoop分布式集群环境搭建

分布式环境搭建之环境介绍 之前我们已经介绍了如何在单机上搭建伪分布式的Hadoop环境,而在实际情况中,肯定都是多机器多节点的分布式集群环境,所以本文将简单介绍一下如何在多台机器上搭建Hadoop的分布式环境. 我这里准备了三台机器,IP地址如下: 192.168.77.128 192.168.77.130 192.168.77.134 首先在这三台机器上编辑/etc/hosts配置文件,修改主机名以及配置其他机器的主机名 [[email protected] ~]# vim /etc/host

Hadoop+Spark:集群环境搭建

环境准备: 在虚拟机下,大家三台Linux ubuntu 14.04 server x64 系统(下载地址:http://releases.ubuntu.com/14.04.2/ubuntu-14.04.2-server-amd64.iso): 192.168.1.200 master 192.168.1.201 node1 192.168.1.202 node2 在Master上安装Spark环境: 具体请参考我的文章:<Hadoop:搭建hadoop集群> Spark集群环境搭建: 搭建h

搭建大数据hadoop完全分布式环境遇到的坑

搭建大数据hadoop完全分布式环境,遇到很多问题,这里记录一部分,以备以后查看. 1.在安装配置完hadoop以后,需要格式化namenode,输入指令:hadoop namenode -format,报错误信息:hadoop: command not found 本文网址:https://www.cnblogs.com/SH170706/p/10312667.html 2. 原文地址:https://www.cnblogs.com/SH170706/p/10312678.html

阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建

准备: 两台配置CentOS 7.3的阿里云ECS服务器: hadoop-2.7.3.tar.gz安装包: jdk-8u77-linux-x64.tar.gz安装包: hostname及IP的配置: 更改主机名: 由于系统为CentOS 7,可以直接使用‘hostnamectl set-hostname 主机名’来修改,修改完毕后重新shell登录或者重启服务器即可. 1 hostnamectl set-hostname master 2 exit 3 ssh [email protected]

Redis笔记整理(二):Java API使用与Redis分布式集群环境搭建

[TOC] Redis笔记整理(二):Java API使用与Redis分布式集群环境搭建 Redis Java API使用(一):单机版本Redis API使用 Redis的Java API通过Jedis来进行操作,因此首先需要Jedis的第三方库,因为使用的是Maven工程,所以先给出Jedis的依赖: <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactI

项目进阶 之 集群环境搭建(三)多管理节点MySQL集群

上次的博文项目进阶 之 集群环境搭建(二)MySQL集群中,我们搭建了一个基础的MySQL集群,这篇博客咱们继续讲解MySQL集群的相关内容,同时针对上一篇遗留的问题提出一个解决方案. 1.单管理节点MySQL集群和多管理节点MySQL集群 上一篇的博客中,我们搭建的MySQL集群架构中,只存在一个管理节点,这样搭建的集群可以用如下所示的结构表示. 仔细分析上图就会发现,上图所示的单管理节点MySQL集群存在当唯一的管理节点由于网络.断电.压力过大等各种原因宕机后,数据节点和SQL节点将会各自为

Hadoop2.6集群环境搭建

Hadoop2.6集群环境搭建(HDFS HA+YARN)原来4G内存也能任性一次. 准备工作: 1.笔记本4G内存 ,操作系统WIN7 (屌丝的配置) 2.工具VMware Workstation 3.虚拟机:CentOS6.4共四台 虚拟机设置: 每台机器:内存512M,硬盘40G,网络适配器:NAT模式 选择高级,新生成虚机Mac地址(克隆虚拟机,Mac地址不会改变,每次最后手动重新生成) 编辑虚拟机网络: 点击NAT设置,查看虚机网关IP,并记住它,该IP在虚机的网络设置中非常重要. N