Hadoop2.7.4集群搭建

HDFS:分布式文件系统

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

HIVE:基于HADOOP的分布式数据仓库,提供基于SQL的查询数据操作

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

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

Mahout:基于mapreduce/spark/flink等分布式运算框架的机器学习算法库

Oozie:工作流调度框架

Sqoop:数据导入导出工具(比如用于mysql和HDFS之间)

Flume:日志数据采集框架

Impala:基于Hadoop的实时分析

HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起。

HDFS集群负责海量数据的存储,集群中的角色主要有: NameNode、DataNode、SecondaryNameNode

YARN集群负责海量数据运算时的资源调度,集群中的角色主要有: ResourceManager、NodeManager

一、服务器系统设置

设置主机名

vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=node1

配置IP、主机名映射

vi /etc/hosts
192.168.182.201 node1
192.168.182.202 node2
192.168.182.203 node3

配置ssh免密登陆 #生成ssh免登陆密钥

ssh-keygen -t rsa (四个回车)

执行完这个命令后,会生成id_rsa(私钥)、id_rsa.pub(公钥)

将公钥拷贝到要免密登陆的目标机器上

ssh-copy-id node2

配置防火墙

#查看防火墙状态

service iptables status

#关闭防火墙

service iptables stop

#查看防火墙开机启动状态

chkconfig iptables --list

#关闭防火墙开机启动

chkconfig iptables off

同步时间

#手动同步集群各机器时间

date -s "2017-03-03 03:03:03"  
yum install ntpdate #默认已经安装好

#网络同步时间(推荐)

ntpdate cn.pool.ntp.org

二、JDK 环境安装

#上传jdk安装包

#解压安装包

tar zxvf jdk-8u65-linux-x64.tar.gz -C /export/server

#配置环境变量

vi /etc/profile 
export JAVA_HOME=/root/apps/jdk1.8.0_65 
export PATH=$PATH:$JAVA_HOME/bin

#刷新配置

source /etc/profile

三、Hadoop 安装包目录结构

解压到/export/server/中:

tar -zxvf 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 程序。

lib:该目录包含了Hadoop对外提供的编程动态库和静态库,与include目录中的头文件结合使用。

libexec:各个服务对用的shell配置文件所在的目录,可用于配置日志输出、启动参数(比如JVM参数)等基本信息。

sbin:Hadoop管理脚本所在的目录,主要包含HDFS和YARN中各类服务的启动/关闭脚本。

share:Hadoop各个模块编译后的jar包所在的目录。

四、Hadoop 配置文件修改

4.1 hadoop-env.sh

文件中设置的是Hadoop运行时需要的环境变量。JAVA_HOME是必须设置的,即使我们当前的系统中设置了 JAVA_HOME,它也是不认识的,因为 Hadoop 即使是在本机上执行,它也是把当前的执行环境当成远程服务器。

vi hadoop-env.sh
export JAVA_HOME=/export/server/jdk1.8.0_65

4.2 core-site.xml

hadoop的核心配置文件,有默认的配置项core-default.xml。

core-default.xml 与 core-site.xml 的功能是一样的,如果在core-site.xml里没有配置的属性,则会自动会获取core-default.xml里的相同属性的值。

/export/server/hadoop-2.7.4/etc/hadoop/core-site.xml

<!-- 用于设置 Hadoop 的文件系统,由 URI 指定 --> 
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://node1:9000</value>
</property>
<!-- 配置 Hadoop 的临时目录,默认/tmp/hadoop-${user.name} --> 
<property>
    <name>hadoop.tmp.dir</name>
    <value>/export/data/hadoop</value>
</property>

4.3 hdfs-site.xml

HDFS的核心配置文件,有默认的配置项hdfs-default.xml。

hdfs-default.xml 与 hdfs-site.xml 的功能是一样的,如果在 hdfs-site.xml里没有配置的属性,则会自动会获取hdfs-default.xml里的相同属性的值。

/export/server/hadoop-2.7.4/etc/hadoop/hdfs-site.xml

<!-- 指定 HDFS 副本的数量 --> 
<property>
    <name>dfs.replication</name>
    <value>2</value>
</property>
<!-- secondary namenode 所在主机的 ip 和端口--> 
<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>node2:50090</value>
</property>

4.4 mapred-site.xml

MapReduce的核心配置文件,有默认的配置项mapred-default.xml。 mapred-default.xml与mapred-site.xml的功能是一样的,如果在mapred-site.xml里没有配置的属性,则会自动会获取mapred-default.xml里的相同属性的值。

/export/server/hadoop-2.7.4/etc/hadoop/该目录中没有mapred-site.xml,将mapred-site.xml.template改名为mapred-site.xml。

<!-- 指定 mr 运行时框架,这里指定在 yarn 上,默认是 local --> 
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>

4.5 yarn-site.xml

YARN的核心配置文件,有默认的配置项yarn-default.xml。

yarn-default.xml 与 yarn-site.xml 的功能是一样的,如果在 yarnsite.xml里没有配置的属性,则会自动会获取yarn-default.xml里的相同属性的值。

/export/server/hadoop-2.7.4/etc/hadoop/yarn-site.xml

<!-- 指定 YARN 的老大(ResourceManager)的地址 --> 
<property> 
    <name>yarn.resourcemanager.hostname</name> 
    <value>node1</value> 
</property> 
<!-- NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce 程序默认值:"" --> 
<property> 
    <name>yarn.nodemanager.aux-services</name> 
    <value>mapreduce_shuffle</value>
</property>

4.6 slaves

slaves文件里面记录的是集群主机名。一般有以下两种作用:

一是:配合一键启动脚本如start-dfs.sh、stop-yarn.sh用来进行集群启动。这时候slaves文件里面的主机标记的就是从节点角色所在的机器。

二是:可以配合hdfs-site.xml里面dfs.hosts属性形成一种白名单机制。dfs.hosts指定一个文件,其中包含允许连接到NameNode的主机列表。必须指定文件的完整路径名。如果值为空,则允许所有主机。例如:

<property>
    <name>dfs.hosts</name>
    <value>/export/server/hadoop-2.7.4/etc/hadoop/slaves</value>
</property>

那么所有在slaves中的主机才可以加入的集群中。

五、Hadoop 环境变量

添加配置环境变量的配置文件:

vi /etc/profile
export JAVA_HOME=/export/server/jdk1.8.0_65 
export HADOOP_HOME=/export/server/hadoop-2.7.4 
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin 

保存配置文件,刷新配置文件:

source /etc/profile

配置完成之后通过命令发送给node2和node3服务器中

scp -r /export/server/hadoop-2.7.4/ root@node2:/export/server
scp -r /export/server/hadoop-2.7.4/ root@node3:/export/server
scp -r /etc/profile root@node2:/etc/
scp -r /etc/profile root@node3:/etc/
最后记住要source /etc/profile

六、Hadoop启动方式

要启动Hadoop集群,需要启动HDFS和YARN两个集群。注意:首次启动HDFS时,必须对其进行格式化操作。本质上是一些清理和准备工作,因为此时的HDFS在物理上还是不存在的。

hdfs namenode-format或者hadoop namenode -format

重新格式化:

1、备份数据

2、删除日志目录  /export/server/hadoop-2.7.4/logs

3、删除数据目录   rm -rf  /export/data/hadoop

4、在node1上:hadoop namenode –format

6.1 单节点逐个启动

在主节点上使用以下命令启动HDFS NameNode:

  hadoop-daemon.sh start namenode

在每个从节点上使用以下命令启动HDFS DataNode:

  hadoop-daemon.sh start datanode

在主节点上使用以下命令启动YARN ResourceManager:

   yarn-daemon.sh  start resourcemanager

在每个从节点上使用以下命令启动YARN nodemanager:

  yarn-daemon.sh start nodemanager

以上脚本位于$HADOOP_PREFIX/sbin/目录下。如果想要停止某个节点上某个角色,只需要把命令中的start改为stop即可。

6.2 脚本一键启动

如果配置了etc/hadoop/slaves和ssh免密登录,则可以使用程序脚本启动

所有Hadoop两个集群的相关进程,在主节点所设定的机器上执行。

hdfs:start-dfs.sh

yarn:  start-yarn.sh

停止集群:stop-dfs.sh、stop-yarn.sh

过时的脚本:一键启动hdfs和yarn:start-all.sh

一键停止hdfs和yarn:stop-all.sh

七、测试

输入:

NameNode http://nn_host:port/ 默认50070.

创建wc目录:

hadoop fs -mkdir -p /wc/in

创建wc.log文件

上传到/wc/in目录中

hadoop fs -put wc.log /wc/in

 ResourceManager http://rm_host:port/ 默认 8088.

进入

运行该目录下的官方mapreduce文件

运行中:

运行成功:

查看统计的单词个数:

下载并查看该文件

测试结束!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值