hadoop集群搭建

hadoop集群的搭建

1、集群简介

HADOOP 集群具体来说包含两个集群: HDFS 集群和 YARN 集群,两者逻辑上分离,但物理上常在一起.
HDFS 集群负责海量数据的存储,集群中的角色主要有:
NameNode、 DataNode、 SecondaryNameNode
YARN 集群负责海量数据运算时的资源调度,集群中的角色主要有:
ResourceManager、 NodeManager
那 mapreduce 是什么呢?它其实是一个分布式运算编程框架,是应用程序开
发包,由用户按照编程规范进行程序开发,后打包运行在 HDFS 集群上,并且受到 YARN 集群的资源调度管理。
Hadoop 部署方式分三种,Standalone mode (独立模式)、Pseudo-Distributed
mode(伪分布式模式)、 Cluster mode(群集模式),其中前两种都是在单机部署。
独立模式又称为单机模式,仅 1 个机器运行 1 个 java 进程,主要用于调试。
伪分布模式也是在 1 个机器上运行 HDFS 的 NameNode 和 DataNode、 YARN 的
ResourceManger 和 NodeManager,但分别启动单独的 java 进程,主要用于调试。
集群模式主要用于生产环境部署。 会使用 N 台主机组成一个 Hadoop 集群。
这种部署模式下, 主节点和从节点会分开部署在不同的机器上。在这里我用三个3 节点为例进行搭建,角色分配如下:
node-01 NameNode DataNode ResourceManager
node-02 DataNode NodeManager SecondaryNameNode
node-03 DataNode NodeManager

2、服务器准备

我使用的是 VMware Workstation Pro 虚拟机创建虚拟服务器来搭建 HADOOP
集群,所用软件及版本如下:
VMware Workstation Pro 12.0
Centos 6.7 64bit

3、网络环境准备

采用 NAT 方式联网。
如果创建的是桌面版的 Centos 系统,可以在安装完毕后通过图形页面进行
编辑。 如果是 mini 版本的,可通过编辑 ifcfg-eth*配置文件进行配置。
注意 BOOTPROTO、 GATEWAY、 NETMASK。
同步时间

4、手动同步集群各机器时间

date -s “2017-12-04 11:11:11”
yum install ntpdate

也可以各个虚拟机都同步网络时间(不会的去查看我的关于同步网络时间的博客)

ntpdate cn.pool.ntp.org
设置主机名
vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=node-1(其他两台机器设置成node-2,node-3)
配置 IP、主机名映射
vi /etc/hosts
192.168.33.101 node-1
192.168.33.102 node-2
192.168.33.103 node-3
配置 ssh 免密登陆

生成 ssh 免登陆密钥

ssh-keygen -t rsa (四个回车)
执行完这个命令后,会生成 id_rsa(私钥)、 id_rsa.pub(公钥)
将公钥拷贝到要免密登陆的目标机器上
ssh-copy-id node-01
ssh-copy-id node-02
ssh-copy-id node-03
配置防火墙

查看防火墙状态

service iptables status

关闭防火墙

service iptables stop

查看防火墙开机启动状态

chkconfig iptables –list

关闭防火墙开机启动

chkconfig iptables off

5、上传 jdk 安装包

jdk-8u65-linux-x64.tar.gz

解压安装包

tar zxvf jdk-8u65-linux-x64.tar.gz -C /root/apps

配置环境变量 /etc/profile
export JAVA_HOME=/root/apps/jdk1.8.0_65
export PATH=$PATH:$JAVA_HOME/bin
刷新配置

source /etc/profile

6、Hadoop 安装包目录结构

解压 hadoop-2.7.4-with-centos-6.7.tar.gz,目录结构如下:
bin: Hadoop 最基本的管理脚本和使用脚本的目录,这些脚本是 sbin 目录
下管理脚本的基础实现,用户可以直接使用这些脚本管理和使用 Hadoop。
etc: Hadoop 配置文件所在的目录,包括 core-site,xml、 hdfs-site.xml、
mapred-site.xml 等从 Hadoop1.0 继承而来的配置文件和 yarn-site.xml 等
Hadoop2.0 新增的配置文件。
include:对外提供的编程库头文件(具体动态库和静态库在 lib 目录中),
这些头文件均是用 C++定义的,通常用于 C++程序访问 HDFS 或者编写 MapReduce
程序。北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090
lib:该目录包含了 Hadoop 对外提供的编程动态库和静态库,与 include 目
录中的头文件结合使用。
libexec:各个服务对用的 shell 配置文件所在的目录,可用于配置日志输
出、启动参数(比如 JVM 参数)等基本信息。
sbin: Hadoop 管理脚本所在的目录,主要包含 HDFS 和 YARN 中各类服务的
启动/关闭脚本。
share: Hadoop 各个模块编译后的 jar 包所在的目录。

7、Hadoop 配置文件修改

Hadoop 安装主要就是配置文件的修改, 一般在主节点进行修改,完毕后 scp
下发给其他各个从节点机器。

1. hadoop-env.sh
文件中设置的是 Hadoop 运行时需要的环境变量。JAVA_HOME 是必须设置的,
即使我们当前的系统中设置了 JAVA_HOME,它也是不认识的,因为 Hadoop 即使
是在本机上执行,它也是把当前的执行环境当成远程服务器。
vi hadoop-env.sh
export JAVA_HOME=/root/apps/jdk1.8.0_65
2. core-site.xml
hadoop 的核心配置文件,有默认的配置项 core-default.xml。
core-default.xml 与 core-site.xml 的功能是一样的,如果在 coresite.xml 里没有配置的属性,则会自动会获取 core-default.xml 里的相同属性
的值。
<!-- 用于设置 Hadoop 的文件系统,由 URI 指定老大namenode的位置 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://node-1:9000</value>
</property>
<!-- 配置 Hadoop 的临时目录,默认/tmp/hadoop-${user.name} -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop-2.4.1/tmp</value>
</property>
3. hdfs-site.xml
HDFS 的核心配置文件,有默认的配置项 hdfs-default.xml。
hdfs-default.xml 与hdfs-site.xml 的功能是一样的,如果在 hdfs-site.xml 里没有配置的属性,则会自动会获取 hdfs-default.xml 里的相同属性
的值。
<!-- 指定 HDFS 副本的数量 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- secondary namenode 所在主机的 ip 和端口->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>192.168.1.152:50090</value>
</property>
4. mapred-site.xml
MapReduce 的核心配置文件,有默认的配置项 mapred-default.xml。
mapred-default.xml 与 mapred-site.xml 的功能是一样的,如果在 mapredsite.xml 里没有配置的属性,则会自动会获取 mapred-default.xml 里的相同属
性的值。
<!-- 指定 mr 运行时框架,这里指定在 yarn 上,默认是 local -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
5. yarn-site.xml
YARN 的核心配置文件,有默认的配置项 yarn-default.xml。
yarn-default.xml 与 yarn-site.xml 的 功 能 是 一 样 的 , 如 果 在 yarnsite.xml 里没有配置的属性,则会自动会获取 yarn-default.xml 里的相同属性
的值。
<!-- 指定 YARN 的老大( ResourceManager)的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node-1</value>
</property>
<!-- NodeManager 上运行的附属服务。需配置成 mapreduce_shuffle,才可运行 MapReduce
程序默认值: "" -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
6. slaves
vi /root/apps/hadoop/etc/hadoop/slaves
node-1
node-2
node-3
8、Hadoop 环境变量

编辑环境变量的配置文件:
vi /etc/profile
export JAVA_HOME= /root/apps/jdk1.8.0_65
export HADOOP_HOME= /root/apps/hadoop-2.7.4
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
保存配置文件,刷新配置文件:
source /etc/profile

9、Hadoop 集群启动

要启动 Hadoop 集群,需要启动 HDFS 和 YARN 两个集群。
注意: 首次启动 HDFS 时,必须对其进行格式化操作。这里的格式化并不是清空磁盘,而是初始化, 本质上是一些清理准备工作,因为此时的 HDFS 在物理上还是不存在的。
hdfs namenode–format 或者 hadoop namenode –format
如果配置了 etc/hadoop/slaves 和 ssh 免密登录,则可以使用程序脚本启动
所有 Hadoop 两个集群的相关进程,在主节点所设定的机器上执行。

执行下面命令前提是得配置环境变量,否则必须得进入hadoop-2.7.4下的sbin目录去执行此命令
开启hdfs:start-dfs.sh
开启yarn:start-yarn.sh
全部开启:start-all.sh

停止集群: stop-dfs.sh、 stop-yarn.sh
一旦 Hadoop 集群启动并运行, 可以通过 web-ui 进行集群查看,如下所述:
NameNode http://NameNode所在机器ip:port/ 端口默认 50070.
ResourceManager http://ResourceManage所在机器ip:port/ 端口默认 8088

如下图所示
这里写图片描述

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值