hadoop集群搭建

本文档详尽地介绍了如何在CentOS7系统上搭建Hadoop集群,从基础的Linux配置,包括初始化设置、防火墙、SELinux、JDK安装、用户管理,到Hadoop的集群配置,涉及zookeeper安装、Hadoop源码编译、HDFS和YARN的安装。文章还提供了多服务器操作脚本,确保集群间的SSH免密登录,为后续的Hadoop配置打下坚实基础。
摘要由CSDN通过智能技术生成

hadoop集群的搭建

这里的hadoop集群的搭建,是在vm15pro虚拟机的基础上,linux版本才用的是CentOS7的镜像,终端这里才用的是Xshell6,另外还需要JDK-8u144的linux安装包,最重要的就是hadoop-2.7.3.tar.gz包
接下来的内容中的代码中有我自己的代码运行结果,可以对比参照
安装主要就分两个大步骤如下:
其中1.1~1.7要用root用户操作,其余便根据情况切换root,文中会有提示

  1. 基本linux配置
    1.1 初始化设置
    1.2 防火墙设置
    1.3 SELinux
    1.4 JDK安装
    1.5 增加hadoop用户
    1.6 hadoop用户和root用户免密切换
    1.7 配置host文件
    1.8 虚拟机克隆
    1.9 服务器ssh免密登录
    1.10 多服务器操作脚本
  2. hadoop配置
    2.1 zookeeper安装配置
    2.2 HADOOP源码编译
    2.3 HDFS安装配置
    2.4 YRAN安装

接下来便开始干活~

1.基本linux配置

这里采用的linux版本是CentOS-7-x86_64-Minimal-1804,基本的安装也不在赘述了,主要注意开启网络,设置时间。
主要采用5台虚拟机搭建集群,其中nd1,nd2分别为主从节点,然后s1,s2,s3分别为三个工作节点
部署的原则还是要遵循HA原则

1.1初始化设置

1) 安装sz rz工具,方便文件的上传和下载

yum install -y lrzsz

2) 这里用的阿里的软件源,需要先下载repo文件进行替换文件的下载地址:
http://mirrors.aliyun.com/repo/Centos-7.repo
这里需要用阿里的软件园对centos7里边的源进行替换吧,用rz命令将他传到root用户的家目录下,使用以下的命令完成替换

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
mv ~/Centos7.repo ~/etc/yum.repos.d/CentOS-Base.repo

这样就完成了软件源的替换,阿里的源有的时候显得不是很好用,也可以换成华为的源都行。
软件源替换完了之后,开始接下的操作

yum clean all 
yum makecache
yum -y update

这三大步做完了之后,如下图所示,就可以正常的使用yum了
这时源已经准备好了,就要开始安装一些常用的软件了~

yum install -y openssh-server vim gcc gcc-c++ glibc-headers bzip2-devel lzo-devel curl wget openssh-clients zlib-devel autoconf automake cmake libtool openssl-devel fuse-devel snappy-devel telnet unzip zip net-tools.x86_64 firewalld systemd ntp

安装完成
update完毕就行了
3)软件源安装好了之后,以防止Centos的动态ip不断地变,这样会对接下来的操作产生很大的问题,所以这里采用静态IP来解决,这样一劳永逸
在修改ip的时候,先ip add查一下本机ip,再将这个ip固定住。

ip add

ip add
这是有的会出现看不见ip的情况,这样只要把下边的文件打开,然后找到ONBOOT,将其=右边改为yes即可
静态IP修改地址
打开文件之后,找到BOOTPROTO="dhcp"这一行,将dhcp改为static,并在这一行的下边,加上以下的内容

IPADDR="192.168.125.131"
NETMASK="255.255.255.0"
GATEWAY="192.168.125.2"
DNS="192.168.125.2"
NM_CONTROLLED="no"

以上的网关和ip根据自己的实际情况填写。
填写完了的效果图如下图所示,之后
ip修改完成
还要关闭NetworkManager,它有时导致网卡的失效

systemctl stop NetworkManager.service   #关闭服务
systemctl disable NetworkManager.service   #移出自启动

关闭完了之后,还要重新编辑/etc/resolv.conf 文件

[root@localhost network-scripts]# vi /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 192.168.125.2 

修改完了保存好了之后,就可以重启网络服务了

systemctl restart network.service

若是重启服务之后,还能继续xshell6还能连接的上,那就修改完成了
重新连接完成
可以ping一下百度,看看是否能上网

[root@localhost ~]# ping www.baidu.com
PING www.a.shifen.com (182.61.200.7) 56(84) bytes of data.
64 bytes from 182.61.200.7 (182.61.200.7): icmp_seq=1 ttl=128 time=8.16 ms
64 bytes from 182.61.200.7 (182.61.200.7): icmp_seq=2 ttl=128 time=4.46 ms
64 bytes from 182.61.200.7 (182.61.200.7): icmp_seq=3 ttl=128 time=7.22 ms
^C
--- www.a.shifen.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 4.465/6.618/8.161/1.570 ms

这样就修改完成了
4)这里要修改一下主机名,以便于在后边的五台服务器中便于区分

[root@localhost ~]# hostnamectl set-hostname nn1.hadoop
[root@localhost ~]# hostname
nn1.hadoop
[root@localhost ~]# 

修改之后reboot即可

1.2 防火墙设置

防火墙这种东西是不可能留的,安全是不可能的,只能靠敲敲代码补补bug为生,里边的程序员个个都是人才,说话又好听~~~

查看防火墙状态:firewall-cmd --state
关闭防火墙:systemctl stop firewalld.service
禁止防火墙开机启动: systemctl disable firewalld.service
查看服务是否开机启动: systemctl is-enabled firewalld.service

最后要达到如下图所示的效果
关闭防火墙

1.3 SELinux

SElinux由于安全功能过于强大,所以要关掉~~~~
首先,先查看SElinux的状态

[root@localhost ~]# /usr/sbin/sestatus -v
SELinux status:                 enabled           #《---------------------开启了
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      31

Process contexts:
Current context:                unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
Init context:                   system_u:system_r:init_t:s0
/usr/sbin/sshd                  system_u:system_r:sshd_t:s0-s0:c0.c1023

File contexts:
Controlling terminal:           unconfined_u:object_r:user_devpts_t:s0
/etc/passwd                     system_u:object_r:passwd_file_t:s0
/etc/shadow                     system_u:object_r:shadow_t:s0
/bin/bash                       system_u:object_r:shell_exec_t:s0
/bin/login                      system_u:object_r:login_exec_t:s0
/bin/sh                         system_u:object_r:bin_t:s0 -> system_u:object_r:shell_exec_t:s0
/sbin/agetty                    system_u:object_r:getty_exec_t:s0
/sbin/init                      system_u:object_r:bin_t:s0 -> system_u:object_r:init_exec_t:s0
/usr/sbin/sshd                  system_u:object_r:sshd_exec_t:s0
[root@localhost ~]# 

查看的状态是开启,这是要进到配置文件进行修改

vi /etc/selinux/conf

把文件里的selinux改成disabled,改完后如下图所示
改完之后
然后wq保存退出,reboot服务器
启动之后用 /usr/sbin/sestatus -v 查看selinux的修改状态,为disable即可

1.4 JDK安装

这里是用的jdk版本是1.8_144,官网即可下载,下载的是rpm包
1)利用rz命令完成上传,传到家目录即可

上传完成
2)接下来便开始利用rpm命令安装

rpm -vih ~/jdk-8u144-linux-x64.rpm

安装完成后如下图所示
安装完成
3)配置JDK环境
修改环境变量文件 /etc/profile,在文件中加入以下配置

export JAVA_HOME=/usr/java/jdk1.8.0_144
export JRE_HOME=$JAVA_HOME/jre
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

添加完成
export 表示设置或显示环境变量。
一个变量创建时,它不会自动地为在它之后创建的shell进程所知。而命令export 可以向后面的shell传递变量的值。
4)刷新环境变量文件,使其生效

# 刷新环境变量
[root@nn1 ~]# source /etc/profile
# 查看系统的变量值
[root@nn1 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/java/jdk1.8.0_144/bin
# 查看java版本
[root@nn1 ~]# java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

当能查看java版本的时候,就说明jdk安装完毕

1.5 增加hadoop用户

在最的集群操作里边,不会再root里边操作,root账户有时候太危险,这里就新建操作账户

# 增加hadoop用户
[root@nn1 ~]# useradd hadoop
# 设置登录密码
[root@nn1 ~]# passwd hadoop
更改用户 hadoop 的密码 。
新的 密码:
无效的密码: 密码是一个回文
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

1.6 hadoop用户和root用户免密切换

在hadoop用户没有权限修改文件的时候,要登录到root用户去修改,输密码是不是很麻烦,这里利用wheel组来达成免密切换
为了更进一步加强系统的安全性,有必要建立一个管理员的组,只允许这个组的用户来执行 “su -” 命令登录为 root 用户,而让其他组的用户即使执行 “su -” 、输入了正确的 root 密码,也无法登录为 root 用户。在UNIX和Linux下,这个组的名称通常为 “wheel” 。
1)修改/etc/pam.d/su配置,su 时要求用户加入到wheel组

vi /etc/pam.d/su

打开后的文件如下图所示
su文件
这时需要启用wheel组合允许往wheel组添加用户,这要就需要将箭头所指的#号注释去掉,去了之后如下所示
文件修改
2)修改/etc/login.defs文件,只有wheel组可以su 到root

  #先备份一个
cp /etc/login.defs /etc/login.defs_back
# 向文件尾追加内容,一定是>>,而不是>,写错了上边的备份就立功了    
echo "SU_WHEEL_ONLY yes" >> /etc/login.defs

然后利用tail /etc/login.defs查看一下是否添加成功

[root@nn1 ~]# tail /etc/login.defs
UMASK           077

# This enables userdel to remove user groups if no members exist.
#
USERGROUPS_ENAB yes

# Use SHA512 to encrypt password.
ENCRYPT_METHOD SHA512 

SU_WHEEL_ONLY yes            #出现了就对了

3)将hadoop用户添加到wheel组

# 添加用户到组
[root@nn1 ~]# gpasswd -a hadoop wheel
正在将用户“hadoop
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值