IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 大数据集群Linux环境配置 -> 正文阅读

[系统运维]大数据集群Linux环境配置

目录

网卡配置

主机名配置

防火墙配置

SeLinux配置

SSH免密互连配置

透明大页配置

文件句柄数配置

磁盘挂载配置

主机时间配置


操作系统作为上层软件的基础,稳定性非常重要,建议在选择操作系统时选择主流且稳定的操作系统,推荐Red Hat Enterprise Linux或者CentOS7的稳定版本;以下操作在CentOS7.6上进行,操作系统不带桌面最小化安装,以root用户进行操作。

网卡配置

大数据集群的每台机器一般都需要设置静态IP,防止因为IP变化导致集群各个组件之间无法正确交互。

Linux默认网卡配置文件参考以下内容:

# 网卡类型,一般为Ethernet
# Ethernet:以太网
# bridge:网桥
# bond:链路聚合
TYPE=Ethernet
# 代理方式,默认关闭
PROXY_METHOD=none
# 默认no,NetworkManager文档中建议,只在PROXY_METHOD=auto时开启此项配置
BROWSER_ONLY=no
# IP地址获取方式
# dhcp:动态IP
# static:静态IP
BOOTPROTO=static
# 默认路由
DEFROUTE=yes
# IPv4致命错误检测
IPV4_FAILURE_FATAL=no
# IPv6初始化
IPV6INIT=yes
# IPv6自动配置
IPV6_AUTOCONF=yes
# IPv6默认路由
IPV6_DEFROUTE=yes
# IPv6致命错误检测
IPV6_FAILURE_FATAL=no
# IPv6地址生成模式
IPV6_ADDR_GEN_MODE=stable-privacy
# 网卡物理设备名称
NAME=eth0
# 网卡设备UUID
UUID=296756a8-7e7d-40b5-9caf-c1c5c475dfc6
# 网卡设备名称
DEVICE=eth0
# 开机启动网卡
ONBOOT=yes
# IP地址
IPADDR=192.168.123.100
# 网关地址
GATEWAY=192.168.123.1
# 子网掩码,也可以使用掩码长度表示,例如:PREFIX=24
NETMASK=255.255.255.0
# 首选DNS地址,备选DNS地址可以用DNS2设置,例如:DNS2=8.8.8.8
DNS1=114.114.114.114

简单网卡配置参考如下内容:

TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.123.100
GATEWAY=192.168.123.1
NETMASK=255.255.255.0

主机名配置

集群中每一台机器都需要设置主机名,最好能够见名知意,命令如下:

hostnamectl set-hostname ${machine1-mysql-master}

集群中每一台机器都需要配置所有机器(包括自身)的IP-Hostname映射关系,修改/etc/hosts文件:

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.123.100   Hostname1
192.168.123.101   Hostname2
192.168.123.102   Hostname3

防火墙配置

集群中每一台机器一般都要求关闭防火墙(如果必须开启防火墙,请参考其他文章配置相应的防火墙规则),命令如下:

systemctl stop firewalld.service
systemctl disable firewalld.service

SeLinux配置

SeLinux(Security-Enhanced Linux)是一个Linux的系统中的安全增强子模块,它定义了每个用户对系统上的应用、进程和文件的访问权限,由于SeLinux的结构和配置都非常复杂,一般都会选择关闭该配置,在集群中每一台机器的/etc/sysconfig/selinux文件中配置如下内容:

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

SSH免密互连配置

Hadoop等组件依赖SSH免密互连来管理节点,所以集群上每一台机器都应该保证SSH免密互连(准确来说应该保证管理节点可以免密登录其他节点)。

确认每一台机器都安装OpenSSH,如果没有安装则执行安装命令,开启sshd服务并将其设置为开机启动,命令如下:

rpm -qa | grep openssh
yum install -y openssh*
systemctl enable sshd
systemctl start sshd

每一台机器上都生成密钥对文件,默认生成在/root/.ssh目录下,id_rsa为私钥文件,id_rsa.pub为公钥文件,命令如下:

ssh-keygen -t rsa

每一台机器上将当前节点的公钥文件发送至所有节点(包括自身)的授权文件(默认生成为/root/.ssh/authorized_keys)中完成当前节点到其他所有节点的SSH免密连接,命令如下(需要根据提示输入其他机器的密码):

ssh-copy-id -i /root/.ssh/id_rsa.pub root@${ip or hostname}

# authorized_keys文件的权限需要为600,即"-rw-------",如需修改则执行以下命令
chmod 600 /root/.ssh/authorized_keys

在所有节点上完成SSH免密互连之后,最好在每一台机器上都验证一遍,谨防遗漏部分机器或者配置错误导致SSH免密互连不成功。?

透明大页配置

透明大页可能会导致比较严重的性能问题,特别是对一些数据库系统来说,在每一台机器上检查并关闭透明大页,命令如下:

# 以下命令结果为[always] madvise never,则表示开启透明大页
cat /sys/kernel/mm/transparent_hugepage/enabled
cat /sys/kernel/mm/transparent_hugepage/defrag

# 临时关闭透明大页
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

为了防止机器重启后,又自动打开透明大页,需要在/etc/rc.d/rc.local文件中追加以下内容:

if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
  echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi

if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
  echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi

?同时需要确保/etc/rc.d/rc.local文件具有可执行权限,命令如下:

chmod +x /etc/rc.d/rc.local

文件句柄数配置

大数据软件一般都会打开较多文件,特别是HDFS、Kafka等,一般Linux默认的文件句柄数为1024是完全不满足需求的,需要修改每一台机器的文件句柄数(一般102400足够,集群数据量大可以适当增大文件句柄数),命令如下:

# 查看当前系统的文件句柄数设置
ulimit -n

# 查看操作系统所允许的最大文件句柄数
# 如果文件句柄数设置超过该值,重启服务器后会导致系统无法正常进入,只能进入救援模式修改文件句柄配置
cat /proc/sys/fs/file-max

# 临时配置文件句柄数
ulimit -n 102400

为了防止机器重启后重置文件句柄数,需要修改每一台机器上的/etc/security/limits.conf文件,永久配置文件句柄数,命令如下:

echo 'root soft nofile 102400' >> /etc/security/limits.conf
echo 'root hard nofile 102400' >> /etc/security/limits.conf

磁盘挂载配置

大数据集群的机器除了系统盘之外一般都会有一块或多块数据盘,一个数据目录对应一块数据盘,这些数据盘需要永久正确挂载,确保每一台机器重启后不会因为磁盘挂载问题导致数据丢失,命令如下:

# 查看所有已经格式化的磁盘
# 命令结果释义:磁盘设备序号: UUID="UUID编号" TYPE="磁盘格式" 
blkid

# 查看所有的磁盘设备
lsblk

# 挂载磁盘,磁盘必须已经格式化
mount -t xfs ${磁盘设备序号} ${path}

# 永久挂载磁盘
# 通过blkid命令获取需要挂载的磁盘设备的UUID、磁盘格式
echo 'UUID=${UUID} ${path} ${type} defaults 0 0' >> /etc/fstab

主机时间配置

大数据集群对各个节点之间的时间要求是同步的,特别是开启了Kerberos安全认证的情况下(默认时差5s,如果超过5s会导致认证不通过);同步时间可以使用ntpdate命令配合定时服务来实现,也可以使用ntp服务来实现;推荐使用ntp进行时间同步,因为ntpdate会将系统时间设置为目标服务器的时间,有可能会造成时间跳变,影响大数据服务,ntp不会造成时间跳变。

ntp是一个server/client架构的服务,一台机器可以同时作为server端和client端,只是配置稍有不同;一般会选择集群中的重点角色的机器(例如Hadoop NameNode节点所在的机器)作为客户端向外部授时服务器进行时间同步,然后该机器本身作为集群内部的server端向集群中其他机器提供时间同步服务。

在集群中每一台机器上安装ntp服务,命令如下:

yum install -y ntp

修改server端配置,修改/etc/ntp.conf文件,命令如下:

# 注释掉以下几行默认的时间服务器
# server 0.centos.pool.ntp.org iburst
# server 1.centos.pool.ntp.org iburst
# server 2.centos.pool.ntp.org iburst
# server 3.centos.pool.ntp.org iburst

# 添加外网授时地址,prefer表示优先选择,iburst表示当NTP服务器不可用时发送一系列并发包进行检测
server ntp1.aliyun.com prefer
server cn.pool.ntp.org iburst

# 添加本机作为授时服务器
server 127.127.1.0
# 本地时间源层级设置
fudge 127.127.1.0 stratum 10

# 允许192.168.122.0/24网段的机器进行时间同步
# 也可以添加单独IP的允许,例如:restrict 192.168.123.111 nomodify notrap
restrict 192.168.123.1 mask 255.255.255.0 nomodify notrap

修改client端配置,修改/etc/ntp.conf文件,命令如下:

# 注释掉以下几行默认的时间服务器
# server 0.centos.pool.ntp.org iburst
# server 1.centos.pool.ntp.org iburst
# server 2.centos.pool.ntp.org iburst
# server 3.centos.pool.ntp.org iburst

# 设置集群内部选择的授时服务器
server 192.168.123.100

ntp服务有一个检测机制,当本机时间与授时服务器时间差距过大时,会导致无法启动ntp服务,因此在启动ntp服务前,一般需要先通过ntpdate 命令来手动同步一次,命令如下:

# 出ntpdate命令外,还可以使用date命令手动设置一个相近的时间
ntpdate ${授时服务器地址}

在所有机器上都启动ntp服务,命令如下:

# 启动ntp服务
systemctl start ntpd

# 检查ntp服务状态
systemctl status ntpd

# 设置开机启动
systemctl enable ntpd

检查时间同步状态,命令如下:

# 首次进行时间同步时会有五分钟左右的同步时间
# 此时进行检查可能会出现"unsynchronised ...",表示没有正常同步
# 建议启动服务后,隔五分钟再检查,结果出现"synchronised ..."表示正常同步中

ntpstat

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-07-21 21:52:42  更:2022-07-21 21:54:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 13:00:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码