linux系统下进行Hadoop开发环境配置(软件准备,防火墙,NTP服务器,环境变量,SSH免密,静态网卡)

VMware虚拟机新建虚拟机自动跳转到图形界面问题解决

给一个小家伙装机时,我需要转到命令行界面进行操作,而它总是显示UI界面而不是命令行,我还以为是下载的VM版本不对,

上网搜了搜,自己操作了一下,在新建完虚拟后登录,然后同时 ctrl+alt+F5 就能切换到命令行操作界面,卡了好一会,我这个脑子啊。

参考链接:虚拟机怎么从图形界面转到命令行(去掉桌面)_vmware怎么进入命令行_虾仁猪心185的博客-CSDN博客

软件准备

         虚拟机软件(VMware官网)

Windows 虚拟机 | Workstation Pro | VMware | CN

        使用虚拟机软件安装CentOS 7

Mirror List,这个是首页

centos-7-isos安装包下载_开源镜像站-阿里云,我下载的是首页中的这个

        安装终端工具 

MobaXterm,下载就行

        下载 64位JDK(7/8)  RPM安装包

Java Archive | Oracle

        下载 hadoop2.x 安装包 我们使用的hadoop版本是 2.7.7

http://archive.apache.org/dist/hadoop/common/

前序下载VM及新建虚拟机,选择本地CentOS7,时间设置,打开以太网开关,我选择中文(英语好选英文)

网络配置

打卡这个 以太网,同时要记录的是ip地址,默认路由,DNS的地址,后面会用到,我一般是直接截图保存一下,后面用直接看。

 NTP服务器

s1

s2:

​ 

root密码设置为(自己随便设计)

完成基本配置重启后登录/

使用链接工具链接虚拟机

注意:电脑的防火墙一定要关掉!!!!

安装对应软件

进去后用:
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 unrar bzip2 

上传对应文件包

基本的需要两个就够了,hadoop,JDK

防火墙查看与关闭

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

关闭SELinux

查看关闭状态

#查看关闭状态
/usr/sbin/sestatus -v

关闭方法

#编辑文件
vim /etc/selinux/config
将文件汇中的改SELINUX为:
SELINUX=disabled

重启服务器

reboot
 
#启动之后用命令:
/usr/sbin/sestatus -v
#查看selinux的修改状态

安装JDK

#解压
rpm -ivh jdk-8u144-linux-x64.rpm

-ivh:安装时显示安装进度

配置JDK环境变量

修改系统环境变量文件

#在文件尾部追加以下内容,如下图
vi /etc/profile

#配置java环境变量
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

使修改生效,并配置JDK

#使修改生效
source /etc/profile
#查看系统变量值
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/java/jdk1.8.0_144/bin:/usr/java/jdk1.8.0_144/bin
#检查JDK 配置情况
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)

 注意三台都要配置这个

配置NTP服务器

NTP是网络时间协议(Network Time Protocol),它是用来同步网络中各个计算机的时间的协议。

#安装npt
yum -y install ntp

同步成为阿里云服务器时间 

控制台输入:

#控制台键入
ntpdate time1.aliyun.com >> /tmp/autontpdate 2>&1

#控制台输入:

crontab -e

在文件中编辑如下内容:

 #整点同步时间
0 * * * * /usr/sbin/ntpdate time1.aliyun.com >> /tmp/autontpdate 2>&1

修改主机名

        修改主机名并查看,我这是三台机器都改,我们可以自己设置集群主机名字,一般三台的设置为:

#master,worker1,worker2,也有设置为slave1slave2
#主节点执行
hostnamectl set-hostname master
#设置完后可以再使用hostname查看一下是否修改成功:
hostname
#从节点1执行
hostnamectl set-hostname worker1
#从节点2执行
hostnamectl set-hostname worker2


master

worker1

 worker2

​ 改名字都后面就会变了,reboot也行

创建hadoop用户并设置密码

创建hadoop 用户

useradd hadoop 

设置密码

passwd hadoop 

密码为:admin

三台都一样

 su 一下

三台机器我都加了hadoop用户,并设置密码为admin,与root用户密码一样

禁止非 wheel 组用户切换到root,配置免密切换root

通常情况下,一般用户通过执行“su -”命令、输入正确的root密码,可以登录为root用户来对系统进行管理员级别的配置。

        但是,为了更进一步加强系统的安全性,有必要建立一个管理员的组,只允许这个组的用户来执行 “su -” 命令登录为 root 用户,而让其他组的用户即使执行 “su -” 、输入了正确的 root 密码,也无法登录为 root 用户。在UNIX和Linux下,这个组的名称通常为 “wheel” 。

su 时要求 这个用户必须加入到wheel组,否则权限不足
 

su root
#修改/etc/pam.d/su文件,将“#auth\t\trequired\tpam_wheel.so”,替换成“auth\t\trequired\tpam_wheel.so”
sed -i 's/#auth\t\trequired\tpam_wheel.so/auth\t\trequired\tpam_wheel.so/g' '/etc/pam.d/su'
#修改/etc/pam.d/su文件,将字符串“#auth\t\tsufficient\tpam_wheel.so”替换成“auth\t\tsufficient\tpam_wheel.so”
sed -i 's/#auth\t\tsufficient\tpam_wheel.so/auth\t\tsufficient\tpam_wheel.so/g' '/etc/pam.d/su'

修改/etc/login.defs文件

只有wheel组可以su 到root

#备份
cp /etc/login.defs /etc/login.defs_back      

# 把“SU_WHEEL_ONLY yes”字符串追加到/etc/login.defs文件底部

echo "SU_WHEEL_ONLY yes" >> /etc/login.defs

tail /etc/login.defs    

#从文件底部查看,是有的

添加用户到管理员

#把hadoop用户加到wheel组里

gpasswd -a hadoop wheel

#查看wheel组里是否有hadoop用户

cat /etc/group | grep wheel

 完事这样就是

给hadoop各用户配置SSH秘钥

为什么呢,我们一台主机master,两台worker,主机要可以随意访问worker,worker不能随意访问主机master,worker之间可以互相访问,在master,worker上执行如下操作,主机master,worker1及worker2上的命令:

su hadoop
mkdir ~/.ssh
ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys 

Master公钥放到下面得文件authorized_keys

如果报错:

chmod: 无法访问"/home/hadoop/.ssh/authorized_keys": 没有那个文件或目录,

那我们这么解决

先看一下有没有这文件,

ls -al ~/.ssh

如master中没有的话我们新建一下,注意这里我们用的是worker来看的(实际上只要master上会有authorized_keys这个操作)当然,你可以都配置免密呗,这个看自己。

master上新建一个authorized_keys文件:

touch ~/.ssh/authorized_keys

 然后在执行操作就可以

 把master的公钥扔到worker1和worker2上面去,这两个机器接受了,master就可免密登录

在master上执行命令如下

scp /root/.ssh/authorized_keys user@worker1:/root/.ssh/

scp /root/.ssh/authorized_keys user@worker2:/root/.ssh/

但是这样太麻烦了

更简单ssh方式是:

#我用这个
ssh-copy-id worker1 
ssh-copy-id worker2

 

 我们可以直观的在worker1及worker2如下目录下看到前后的对比执行情况

 验证

从master免密到worker1,worker2

worker之间也需要互相配置一下免密。

同样使用这个命令

ssh-copy-id hadoop-worker2

ssh-copy-id hadoop-worker1

配置网络ip

[hadoop@hadoop-master root]$ ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.20.128  netmask 255.255.255.0  broadcast 192.168.20.255
        inet6 fe80::666b:bc2:cfef:b77c  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:84:fb:36  txqueuelen 1000  (Ethernet)
        RX packets 30040  bytes 2138384 (2.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 67355  bytes 7719890 (7.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 74  bytes 6220 (6.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 74  bytes 6220 (6.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

配置静态ip

查看网卡硬件名称和基本信息

配置配置文件

虚拟机会给每个克隆的虚拟机创建新网卡,如上面的 ens33 。
如果网卡设备信息中没有显示IP,则需要
#配置配置文件
cd /etc/sysconfig/network-scripts/

修改ifcfg-ens33

#修改ifcfg-ens33

vi icfg-ens33

进入如下界面

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="fa278d3e-e01e-4f16-b6e0-889c927c82ad"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.20.128
PREFIX=24
GATEWAY=192.168.20.2
DNS=192.168.20.2

 完事后重启

配置完后,用

#重启网络服务
systemctl restart network.service

重启网络服务,当前的ssh就连接不上了,是因为网络IP被改变成你自己设置的静态IP。

ping一下看看能不能联网

 上不了网正常,网络IP被改变成你自己设置的静态IP。要执行下面操作

停止掉NetworkManager服务

配置 /etc/resolv.conf  的 nameserver

#查看nameserver是否被设置正确
cat /etc/resolv.conf    

[root@hadoop-master network-scripts]# cat /etc/resolv.conf
 vi /etc/resolv.conf 修改文件,如果不存在nameserver就在文件下面添加,如果存在就修改,把nameserver 设置成自己对应的DNS。
[root@hadoop-master network-scripts]# cat /etc/resolv.conf
# Generated by NetworkManager
search hadoop
nameserver 192.168.20.2

停止掉NetworkManager服务

#停止NetworkManager服务
systemctl stop NetworkManager.service  
#并设置成开机不启动
systemctl disable NetworkManager.service  
#重启网络服务
systemctl restart network.service   

        

[root@hadoop-master network-scripts]# systemctl stop NetworkManager.service
[root@hadoop-master network-scripts]# systemctl disable NetworkManager.service
Removed symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.
[root@hadoop-master network-scripts]# systemctl restart network.service
[root@hadoop-master network-scripts]# ping www.baidu.com
PING www.a.shifen.com (180.101.50.188) 56(84) bytes of data.
64 bytes from 180.101.50.188 (180.101.50.188): icmp_seq=1 ttl=128 time=27.3 ms
64 bytes from 180.101.50.188 (180.101.50.188): icmp_seq=2 ttl=128 time=28.6 ms
64 bytes from 180.101.50.188 (180.101.50.188): icmp_seq=3 ttl=128 time=30.6 ms
64 bytes from 180.101.50.188 (180.101.50.188): icmp_seq=4 ttl=128 time=28.2 ms
^C
--- www.a.shifen.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3007ms
rtt min/avg/max/mdev = 27.382/28.723/30.671/1.227 ms

ping一下百度

 基本环境配置完毕

总结

我们安装了三台虚拟机,一台主,两台从,安装完使用MobaXterm来操作

上传文件,关闭防火墙,关闭SElinux,并安装JDK,配置NTP服务器,创建hadoop用户,配置ssh秘钥并验证,配置静态IP,修改对应文件ifcfg-ens33,最后验证网络服务。这基本上完成基本功能的搭建。

后续安装别的大数据组件呗,写这东西真费劲啊,不过还挺有趣,前面创建虚拟机省略部分步骤,其他的都很完整!我真牛逼!

猜你喜欢

转载自blog.csdn.net/qq_52128187/article/details/131321235