在centos7上搭建hadoop集群

本文详细指导如何在CentOS7环境下部署Hadoop 2.7.3,包括下载Hadoop和JDK,设置SSH免密码登录,配置IP、主机名和hosts文件,以及搭建环境变量、安装和配置Hadoop集群。最后,提供了防火墙和SELinux的管理以及Hadoop服务的启动与验证过程。
摘要由CSDN通过智能技术生成

准备工作

主机名称

系统环境

ip地址

hadoop-master

centos7

192.168.150.181

hadoop-slave1

centos7

192.168.150.182

hadoop-slave2

centos7

192.168.150.183

1.下载hadoop
本文用的是hadoop-2.7.3的版本
下载hadoop的链接:http://hadoop.apache.org/releases.html#25+August%2C+2016%3A+Release+2.7.3+available
这里写图片描述

2.下载jdk
本文用的是jdk1.8
jdk下载链接:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
这里写图片描述

3.安装3个虚拟机并实现ssh免密码登录
- 1.安装虚拟机
这里用的linux系统是CentOS7,安装方法请看上篇博客(centos7 Linux环境的搭建);安装3台机器,机器名分别是hadoop-master、hadoop-slave1、hadoop-slaver2
1.1)机器在安装的时候,可以创建1个hadoop用户,之后通过hostname进行修改;
1.2)也可以使用克隆的方式复制多个独立的虚拟机,每个虚拟机创建一个Hadoop用户并加入到root组中useradd -m hadoop -G root -s /bin/bash 利用 passwd hadoop 配置密码遇到提示说密码简单就再输入一次
如图:
- 2.配置ip和主机名

用root用户登录hadoop-master主机上配置

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

这里写图片描述
注意如果你是克隆的虚拟机那么每个虚拟机的网卡UUID是一样的,这个不行,所有要删除这个,让它自动在生成一个
重启网路服务:systemctl restart network
我的实验是把上面图中的ip地址改为192.168.196.162 默认网关设置为192.168.150.2 为什么这么做,根据什么要看看你的虚拟机网络编辑器 这个在虚拟机菜单 编辑 中 我的设置如图:
这里写图片描述
如果你在上图中设置取消了DHCP那么你想让你的电脑访问虚拟机就设置你的电脑中
这里写图片描述
配置静态IP
这里写图片描述
修改主机名:vi /etc/hostname删除原有的,修改成hadoop-master 保存退出
- 3. 修改/etc/hosts文件
修改hosts:vi 、etc/hosts配置如图所示:
这里写图片描述
保存退出,重启虚拟机。在每个虚拟机里重复修改网卡(ifcfg-enss*),hostname,hosts 的步骤,重启后测试互通性
要求在hadoop-master中能ping通slave1,slave2。其它任何一个虚拟机中都能ping通另外两个才行
这里写图片描述
- 4.给hadoop-master生成秘钥文件并且在hadoop-master上创建authorized_keys文件
检查每个虚拟机上是否安装了ssh 和 启动了sshd服务

rpm -qa | grep ssh

如图所示:(出现ssh server和client证明已经安装)
这里写图片描述
如果没有安装请执行下面的代码:(遇到输入y/N输入y)

yum -y install openssl openssh-server openssh-clients

退出所有虚拟机上root登陆用户,使用hadoop用户登录

在每个虚拟机上执行ssh localhost测试一下,最好都做一下,非常有用,会生成 .ssh 隐藏文件夹,遇到提示输入yes
这里写图片描述

在hadoop-master虚拟机上生成ssh密钥

cd .ssh
ssh-keygen -t rsa #遇到提示一路回车就行
ll #会看到 id_rsa id_rsa.pub 两文件前为私钥,后为公钥
cat id_rsa.pub >> authorized_keys #把公钥内容追加到authorized_keys文件中
chmod 600 authorized_keys #修改文件权限,重要不要忽略

如图:
这里写图片描述
至此hadoop-master可以无密码登陆自己了,测试 ssh localhost 不再提示输入密码,如果不能请检查少了上面那一步

  • 5.将authorized_keys文件复制到其他机器,实现hadoop-master无密码登陆到所有slave上

    scp authorized_keys hadoop@hadoop-slave1:~/.ssh/
    scp authorized_keys hadoop@hadoop-slave2:~/.ssh/

如图:
这里写图片描述

  • 6.测试使用ssh进行无密码登录
    这里写图片描述

安装jdk8+并搭建环境变量

使用xftp把jdk-8u121-Linux-x64.rpm传送到每个虚拟机上

如图:
这里写图片描述
这里写图片描述

使用下面代码安装

sudo yum -y install jdk-8u121-linux-x64.rpm 

如果出现这样的错误 hadoop 不在 sudoers 文件中。此事将被报告

可以使用两种途径解决:
1)切换到root用户下

su
yum -y install jdk-8u121-linux-x64.rpm

2)切换到root用户下,配置hadoop的权限,改为root权限

su
visudo

之后输入:89 回车 添加hadoop ALL=(ALL) ALL 注意不是空格是制表符
这里写图片描述
保存退出,切换到hadoop用户下,重新输入命令:sudo yum -y install jdk-8u121-linux-x64.rpm 测试是否安装成功,输入如下命令

java -version

如图表示安装成功:
这里写图片描述

搭建环境变量,我使用本地环境变量,默认安装的jdk在/usr/Java/jdk1.8.0_121

vi .bashrc

添加

# Java Environment Variables
export JAVA_HOME=/usr/java/jdk1.8.0_121
export PATH=$PATH:$JAVA_HOME/bin

这里写图片描述
退出,保存,执行如下命令:

source .bashrc

验证命令:echo $PATH/JAVA_HOME
这里写图片描述
注意:每台机器上都要做一遍

安装hadoop并配置

使用xftp把hadoop-2.7.3.tar.gz传送到每个虚拟机上(这一步可以在传jdk的时候一起做)

使用tar -xzvf hadoop-2.7.3.tar.gz 解压

配置hadoop环境变量vi .bashrc 我的hadoop安装目录/home/hadoop/hadoop-2.7.3

添加

# Hadoop Environment Variables
export HADOOP_HOME=/home/hadoop/hadoop-2.7.3
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

这里写图片描述

编辑如下5个文件 在 /home/hadoop/hadoop-2.7.3/etc/hadoop 目录中

1.core-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <!-- 指定HDFS老大(namenode)的通信地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop-master:9000</value>
    </property>
    <!-- 指定hadoop运行时产生文件的存储路径 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/home/hadoop/hadoop-2.7.3/tmp</value>
    </property>
</configuration>

2.hdfs-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
        <!-- 设置namenode的http通讯地址 -->
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>hadoop-master:50090</value>
        </property>
        <!-- 设置hdfs副本数量 -->
        <property>
                <name>dfs.replication</name>
                <value>2</value>
        </property>
         <!-- 设置namenode存放的路径 -->
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/home/hadoop/hadoop-2.7.3/tmp/dfs/name</value>
        </property>
         <!-- 设置datanode存放的路径 -->
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/home/hadoop/hadoop-2.7.3/tmp/dfs/data</value>
        </property>
</configuration>

3.mapred-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
        <!-- 通知框架MR使用YARN -->
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>hadoop-master:10020</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>hadoop-master:19888</value>
        </property>
</configuration>

4.yarn-site.xml

<?xml version="1.0"?>
<configuration>
 <!-- 设置 resourcemanager 在哪个节点-->
<!-- Site specific YARN configuration properties -->
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>hadoop-master</value>
        </property>
         <!-- reducer取数据的方式是mapreduce_shuffle -->
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>

</configuration>

5.slaves

hadoop-slave1
hadoop-slave2

运行hadoop集群#

关闭防火墙和selinux

在root用户下执行

systemctl disable firewalld   #此命令在下次重启时生效,将永久关闭防火墙

#或用

systemctl stop firewalld    #只在本次运用时生效,下次开启机器时需重复此操作
setenforce 0  #仅此次关闭selinux,下次开启机器时需重复此操作

#永久关闭selinux 
vi /etc/selinux/config

这里写图片描述
在每台机子上都执行此操作

**

启动hadoop集群

**
在hadoop-master执行如下命令:

hdfs namenode -format #第一次启动要执行格式化,之后启动不用执行这个
start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver

之后在hadoop-master 执行jps

看到如下算成功:

[hadoop@hadoop-master ~]$ jps
3345 NameNode
3529 SecondaryNameNode
3962 JobHistoryServer
3678 ResourceManager
3998 Jps
[hadoop@hadoop-master ~]$ 

在hadoop-slave1 和 hadoop-slave2上 执行jps

在hadoop-slave1上

[hadoop@hadoop-slave1 ~]$ jps
3142 DataNode
3357 Jps
3246 NodeManager
[hadoop@hadoop-slave1 ~]$ 

在hadoop-slave2上

[hadoop@hadoop-slave2 ~]$ jps
3092 DataNode
3306 Jps
3196 NodeManager
[hadoop@hadoop-slave2 ~]$ 

上面的信息中数字表示进程ID,后面的字符表示进程名字
缺少任何一个进程表示集群启动失败
失败可以通过查看日志查找原因

如果通过真机win访问hadoop web管理界面需要先配置真机的hosts文件它存在于C:WindowsSystem32driversetc 目录中 在hosts文件中添加

192.168.150.181 hadoop-master
192.168.150.182 hadoop-slave1
192.168.150.183 hadoop-slave2

之后访问 http://hadoop-master:50070 查看节点状态

这里写图片描述

访问http://hadoop-master:8088 查看如图

这里写图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值