文章目录

  • 1 检查生产环境
  • 1.1 检查硬件信息
  • 1.2 确认系统信息
  • 1.3 确认服务器内部网络是否互通
  • 1.4 配置yum源
  • 2 修改系统配置
  • 2.1 修改主机名(可选)
  • 2.2 更新hosts文件
  • 2.3 关闭防火墙,禁止开机自启
  • 2.4 各主机之间的免密登录(可以不用配置)
  • 2.5 禁用selinux(优化项,所有节点)
  • 2.6 禁用ipv6(优化项,所有节点)
  • 2.7 安装NTP
  • 3 优化系统配置
  • 3.1 关闭tuned (所有节点)
  • 3.2 关闭透明页 (所有节点)
  • 3.3 修改swappiness参数 (所有节点)
  • 3.4 设置会话超时时间(所有节点)
  • 3.5 安装常用工具 (所有节点)
  • 4 系统性能测试
  • 网络测试
  • 磁盘IO测试
  • 5 安装基础服务
  • 5.1 安装jdk (所有节点)
  • 5.2 添加mysql驱动包 (所有节点)
  • 5.3 安装 mysql (控制节点)
  • 5.4 安装httpd服务 (控制节点)
  • 5.5 配置Cloudera Manager包yum源 (控制节点)
  • 5.6 配置yum仓库(控制节点)
  • 5.7 安装cm(管理节点)
  • 5.8 初始化cm(管理节点)
  • 5.9 启动cm (控制节点)
  • 5.10 启动数据节点agent
  • 2 cdh 搭建
  • 前言
  • 2.1 确认服务器内部网络是否互通
  • 2.1 修改服务器名称(可选)


1 检查生产环境

1.1 检查硬件信息

硬件信息一般装系统的同学会提供,且集群的机器也会按照我们的要求进行配置,检验几个核心的系统和硬件参数:

内存:free -g
磁盘空间和目录划分:df -h
系统核数:grep "processor" | sort | uniq | wc -l

1.2 确认系统信息

保证操作系统是要求的centos系列,最低建议要求7.4,位数建议64位

查看命令:cat /etc/redhat-release

1.3 确认服务器内部网络是否互通

如果无法ping通内部服务,则检查 /etc/sysconfig/network-scripts/ifcfg-ens33 文件,确认 ONBOOT 的值如果为no需要修改为yes(Centos7.5虚拟机安装初始默认为no),否则网络无法连通。手动检查各个主机上的网络设置,如果有问题则修改配置

# ONBOOT=no 改成 ONBOOT=yes(ifcfg-ens33该名称各主机可能不一样)修改完后重启 vim /etc/sysconfig/network-scripts/ifcfg-ens33 reboot

1.4 配置yum源

已配置好的话此步跳过,以下适用于服务器已经配置了其他源,yum不可用的情况

cd /etc/yum.repos.d/ rename .repo .repo.bak *.repo wget http://mirrors.aliyun.com/repo/Centos-7.repo yum clean all yum makecache

2 修改系统配置

2.1 修改主机名(可选)

修改的主机名,和稍后需要配置hosts文件保持一致

查看主机名(Centos7) less /etc/hostname 修改主机名,以下每条命令在对应的主机上执行 hostnamectl set-hostname master01 hostnamectl set-hostname hadoop01 hostnamectl set-hostname hadoop02 hostnamectl set-hostname hadoop03

2.2 更新hosts文件

所有节点执行(重要)

所有集群hosts配置要相同

查看hosts: less /etc/hosts

echo "192.168.0.131 master01" >> /etc/hosts
echo "192.168.0.45 hadoop01" >> /etc/hosts
echo "192.168.0.155 hadoop02" >> /etc/hosts
echo "192.168.0.170 hadoop03" >> /etc/hosts

2.3 关闭防火墙,禁止开机自启

所有节点执行

局域网内部安全情况下最好关闭防火墙,因为CM管理组件和CDH组件有大量的端口进行通讯,需要配置很多防火墙策略。

需要开放的端口可参考 官网说明,如果不能确保开放所有所需端口,则需要关闭防火墙

- systemctl stop firewalld 关闭防火墙
- systemctl disable firewalld 禁止防火墙开机自启
- vim /etc/selinux/config —> SELINUX=disabled (修改)

2.4 各主机之间的免密登录(可以不用配置)

  • manager节点执行ssh-keygen -t rsa 一路回车到结束,在/root/.ssh/下面会生成一个公钥文件id_rsa.pub
  • cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 将公钥追加到authorized_keys
  • chmod 600 ~/.ssh/authorized_keys 修改权限
  • 将~/.ssh从当前节点分发到其他各个节点。如:scp -r ~/.ssh/ root@node1:~/.ssh/
  • ssh 各个节点互相登陆

2.5 禁用selinux(优化项,所有节点)

所有节点

查看是否开启:vim /etc/selinux/config 修改:SELINUX=disable

sed -i ‘s/SELINUX=enforce/SELINUX=disabled/g’ /etc/selinux/config

2.6 禁用ipv6(优化项,所有节点)

Centos7.5默认开启IPv6,CM组件明确说明不支持系统的IPv6功能,IPv6开启状态下可能会出现不可预料的错误,需要提前关闭。

查看IPv6启用状态可以通过以下几种方式:

  • ifconfig:查看是否有IPv6的地址(inet6)
  • lsmod:查看是否有ipv6关键字
  • disable_ipv6:查看/proc/sys/net/ipv6/conf/all/disable_ipv6文件内容,0为开启,1为关闭

# 查看IPv6当前状态,有值则为打开,空则为关闭 ansible all -a "lsmod | grep ipv6"

IPv6打开的情况下如何关闭:

# 第六行添加 vim /etc/default/grub GRUB_CMDLINE_LUNUX="ipv6.disable=1 ...." # 重启 ansible all -a "reboot" # 验证 ansible all -a "lsmod | grep ipv6"

2.7 安装NTP

以下操作是所有节点进行

设置好后的验证操作:

ntpdc -c loopinfo #查看与时间同步服务器的时间偏差
ntpq -p #查看当前同步的时间服务器
ntpstat #查看状态

1、添加dns,如果有可以不用做该操作
echo "nameserver 114.114.114.114" >> /etc/resolv.conf
echo "nameserver 8.8.8.8" >> /etc/resolv.conf
2、修改为中国标准时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
3、安装ntp
yum install ntp -y
4、手动同步时间(ntpd服务关闭的情况下),避免时间差距过大导致同步失败
ntpdate -u 0.cn.pool.ntp.org
5、有外网的情况下可直接配置外部ntp服务器
echo "server ntp1.aliyun.com" >> /etc/ntp.conf
6、启动ntp
systemctl start ntpd
7、设置开机自动启动
systemctl enable ntpd

3 优化系统配置

3.1 关闭tuned (所有节点)

tuned服务会动态调整系统参数,在自定义优化后,重启会覆盖掉已优化的参数

1、启动,检查tuned状态 systemctl start tuned systemctl status tuned 2、显示No current active profile时执行下命令 tuned-adm off tuned-adm list 3、关闭tuned,禁止开机启动 systemctl stop tuned systemctl disable tuned

3.2 关闭透明页 (所有节点)

检查验证透明页是否开启,never是未启用

cat /sys/kernel/mm/transparent_hugepage/enabled cat /sys/kernel/mm/transparent_hugepage/defrag

如果启用启用时,执行以下操作

1 关闭 echo never > /sys/kernel/mm/transparent_hugepage/enabled echo never > /sys/kernel/mm/transparent_hugepage/defrag 2 设置开机关闭 echo "echo never > /sys/kernel/mm/transparent_hugepage/defrag" >> /etc/rc.local echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.local chmod +x /etc/rc.d/rc.local 3 在GRUB_CMDLINE_LINUX项目后面添加一个参数:transparent_hugepage=never vim /etc/default/grub 4 重新生成gurb.cfg文件 grub2-mkconfig -o /boot/grub2/grub.cfg

3.3 修改swappiness参数 (所有节点)

为了避免服务器使用swap功能而影响服务器性能,一般都会把vm.swappiness修改为0(cloudera建议10以下)

这里设为1,代表:vm.swappiness=1 #使用到达99%,才开始用Swap虚拟内存

验证命令,查看原始值:

cat /proc/sys/vm/swappiness

1、设置值 sysctl -w vm.swappiness=1 echo "vm.swappiness=1" >> /etc/sysctl.conf

3.4 设置会话超时时间(所有节点)

echo "TMOUT=900">>/etc/profile

3.5 安装常用工具 (所有节点)

yum install -y expect bc net-tools iotop zip unzip telnet wget iperf3 fio ntfs-3g lzo iftop vim

3.6 系统内核优化

echo -e "\nnet.ipv4.tcp_tw_reuse = 1
 \nnet.ipv4.tcp_tw_recycle = 1
 \nnet.ipv4.tcp_keepalive_time = 1200
 \nnet.ipv4.ip_local_port_range = 10000 65000
 \nnet.ipv4.tcp_max_syn_backlog = 8192
 \nnet.ipv4.tcp_max_tw_buckets = 5000
 \nfs.file-max = 655350
 \nnet.ipv4.route.gc_timeout = 100
 \nnet.ipv4.tcp_syn_retries = 1
 \nnet.ipv4.tcp_synack_retries = 1
 \nnet.core.netdev_max_backlog = 16384
 \nnet.ipv4.tcp_max_orphans = 16384
 \nnet.ipv4.tcp_fin_timeout = 2
 \net.core.somaxconn=32768
 \kernel.threads-max=196605
 \kernel.pid_max=196605
 \vm.max_map_count=393210"  >> /etc/sysctl.conf

3.7 最大打开文件数优化

最大打开文件数
ulimit -a
sed -i '$ a\* soft nofile 196605' /etc/security/limits.conf
sed -i '$ a\* hard nofile 196605' /etc/security/limits.conf
echo "* soft nproc 196605" >> /etc/security/limits.conf
echo "* hard nproc 196605" >> /etc/security/limits.conf

4 系统性能测试

登录linux服务器,安装常用工具

yum install -y expect bc net-tools iotop zip unzip telnet wget iperf3 fio ntfs-3g lzo iftop vim

网络测试

使用iperf测试主机之间的网络传输效率。

# 在一个主机上启动iperf 服务端
iperf3 -s -p 12345 -i 1
# 另外一个主机启动iperf 客户端连接服务端
iperf3 -c cdh85-19 -p 12345 -i 1 -t 10 -w 100K

磁盘IO测试

使用fio工具对io进行各个场景的读写性能测试。

随机读

fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=4k -size=60G -numjobs=64 -runtime=10 -group_reporting -name=file -allow_mounted_write=1

顺序读

fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=4k -size=60G -numjobs=64 -runtime=10 -group_reporting -name=file -allow_mounted_write=1

随机写

fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=4k -size=60G -numjobs=64 -runtime=10 -group_reporting -name=file -allow_mounted_write=1

顺序写

fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=4k -size=60G -numjobs=64 -runtime=10 -group_reporting -name=file -allow_mounted_write=1

混合随机读写

fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=30 -ioengine=psync -bs=4k -size=60G -numjobs=64 -runtime=10 -group_reporting -name=file -ioscheduler=noop -allow_mounted_write=1

todo:

  • 内存性能测试
  • 操作系统性能测试

5 安装基础服务

5.1 安装jdk (所有节点)

rpm -qa | grep java # 查询已安装的java
yum remove java* # 卸载
rpm -ivh oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
vi /etc/profile #末尾添加
------------------添加的内容-------------------------------
export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera/
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
----------------------添加的内容-----------------------------
source /etc/profile
java -version #验证安装是否成功

5.2 添加mysql驱动包 (所有节点)

驱动包是提前下载好,上传到服务器的

mkdir -p /usr/share/java
mv /root/temp/mysql-connector-java.jar /usr/share/java/

5.3 安装 mysql (控制节点)

mysql密码忘记后重置操作

# 重置 /usr/bin/mysql_secure_installation

查看、卸载已有的mariadb数据库

rpm -qa|grep -i mariadb rpm -e mariadb-libs-5.5.65-1.el7.x86_64 --nodeps

  • 解压mysql安装包并进行安装:

tar -xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar rpm -ivh mysql-community-common-5.7.19-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-5.7.19-1.el7.x86_64.rpm rpm -ivh mysql-community-client-5.7.19-1.el7.x86_64.rpm rpm -ivh mysql-community-server-5.7.19-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-compat-5.7.19-1.el7.x86_64.rpm

  • MYSQL配置:

初始化配置mysql mysqld --initialize --user=mysql # 初始化mysql使mysql目录的拥有者为mysql用户 2、查看mysql密码 grep "temporary password" /var/log/mysqld.log 3、启动mysql systemctl start mysqld systemctl status mysqld systemctl enable mysqld 4、连接mysql,修改密码 mysql -uroot –p mysql》 ALTER USER USER() IDENTIFIED BY '123456';

登录进去后,ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.需要修改访问密码:

ALTER USER USER() IDENTIFIED BY ‘rootpwd’;
如果是5.7之前版本,可以使用如下方式: SET PASSWORD = PASSWORD(‘rootpwd’);
如果不能登陆,设置免密登录并重启mysql服务:
vi /etc/my.cnf #在[mysqld]的段中加上一句:skip-grant-tables ,
然后重启mysql: systemctl restart mysqld

  • 创建库(后续安装服务等使用)

create database metastore default charset utf8 collate utf8_general_ci; create database amon default charset utf8 collate utf8_general_ci; create database rman default charset utf8 collate utf8_general_ci; create database hue default charset utf8 collate utf8_general_ci; create database oozie default charset utf8 collate utf8_general_ci; CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; create database hive default charset utf8 collate utf8_general_ci; GRANT ALL ON hive.* TO 'hive'@'%' IDENTIFIED BY 'hive'; GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY 'scm'; grant all on metastore.* to 'metastore'@'%' identified by 'metastore'; grant all on amon.* to 'amon'@'%' identified by 'amon'; grant all on rman.* to 'rman'@'%' identified by 'rman'; grant all on hue.* to 'hue'@'%' identified by 'hue'; grant all on oozie.* to 'oozie'@'%' identified by 'oozie';

5.4 安装httpd服务 (控制节点)

yum install httpd
systemctl start httpd
systemctl enable httpd.service

5.5 配置Cloudera Manager包yum源 (控制节点)

1、创建cdh包路径,把 CDH 6.2 的三个文件放到该目录下

  • - CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel.sha
    - CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel
    - manifest.json

mkdir -p /var/www/html/cloudera-repos/cdh6.2

2、创建cm包路径,将Cloudera Manager安装需要的5个rpm包,asc文件以及jdk文件下载到本地,放在同一目录,执行createrepo命令生成rpm元数据

allkeys.asc cloudera-manager-agent-6.2.0-968826.el7.x86_64.rpm cloudera-manager-daemons-6.2.0-968826.el7.x86_64.rpm cloudera-manager-server-6.2.0-968826.el7.x86_64.rpm cloudera-manager-server-db-2-6.2.0-968826.el7.x86_64.rpm enterprise-debuginfo-6.2.0-968826.el7.x86_64.rpm oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpmmkdir -p /var/www/html/cloudera-repos/cm6.2 cd /var/www/html/cloudera-repos/cm6.2 yum install createrepo createrepo . 以上命令执行后, 最终 cm6.2目录下多了一个repodata目录

5.6 配置yum仓库(控制节点)

下载仓库文件和key文件

cd /var/www/html/cloudera-repos/cm6.2 wget https://archive.cloudera.com/cm6/6.2.0/redhat7/yum/RPM-GPG-KEY-cloudera 2、打开仓库配置,下载仓库文件 cd /etc/yum.repos.d wget https://archive.cloudera.com/cm6/6.2.0/redhat7/yum/cloudera-manager.repo 3、修改仓库文件 vim cloudera-manager.repo

[cloudera-manager]
name=Cloudera Manager 6.2.0
baseurl=http://master01/cloudera-repos/cm6.2/
gpgkey=http://master01/cloudera-repos/cm6.2/RPM-GPG-KEY-cloudera
gpgcheck=1
enabled=1
autorefresh=0
type=rpm-md

$ yum clean all $ yum makecache $ yum repolist

5.7 安装cm(管理节点)

1、安装管理节点

sudo yum install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server

2、移动cdh的安装包到/opt/cloudera/parcel-repo

mv /root/CDH-6.2.0/parcel-repo/* /opt/cloudera/parcel-repo 生成签名文件 sha1sum CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel | awk '{ print $1 }' > CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel.sha

5.8 初始化cm(管理节点)

初始化数据库

cat /etc/cloudera-scm-server/db.properties /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm

5.9 启动cm (控制节点)

service cloudera-scm-server start systemctl enable cloudera-scm-server

访问 http://master01:7180/cmf/login开始操作

5.10 启动数据节点agent

把管理节点的仓库文件发送到各数据节点

1、管理节点发送配置文件到各子节点 scp /etc/yum.repos.d/cloudera-manager.repo root@hadoop01:/etc/yum.repos.d/ scp /etc/yum.repos.d/cloudera-manager.repo root@hadoop02:/etc/yum.repos.d/ scp /etc/yum.repos.d/cloudera-manager.repo root@hadoop03:/etc/yum.repos.d/ 2、各子节点重建yum yum clean all yum makecache yum repolist sudo yum install cloudera-manager-daemons cloudera-manager-agent 3、所有节点执行以下 systemctl start cloudera-scm-agent systemctl enable cloudera-scm-agent

6 hive配置修改

修改后可使用hiveDDL语句

1.将datanucleus.autoCreateSchema 改为true
2.将hive.metastore.schema.verification 改为 flash

2 cdh 搭建

前言

系统版本:某大数据研发建议系统版本为CentOS7.2

查看操作系统系统版本命令
cat /etc/issue  或cat /etc/redhat-release

本次搭建环境基础资源

CentOS Linux release 7.8.2003 (Core)
已有资源
192.168.0.131
192.168.0.170
192.168.0.45
192.168.0.155

服务器选型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Enpv2g7f-1602566890310)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1594792414765.png)]

服务分配

服务名称

子服务

hadoop102

hadoop103

hadoop104

hadoop104

NameNode


HDFS

DataNode




SecondaryNameNode



Yarn

NodeManager





Resourcemanager


Zookeeper

Zookeeper Server





Hive

Hive


MySQL

MySQL


Sqoop

Sqoop


hbase

hbase




cudu

cudu




服务数总计

6

6

6

6

2.1 确认服务器内部网络是否互通

如果无法ping通内部服务,则检查 /etc/sysconfig/network-scripts/ifcfg-ens33 文件,确认 ONBOOT 的值如果为no需要修改为yes(Centos7.5虚拟机安装初始默认为no),否则网络无法连通。手动检查各个主机上的网络设置,如果有问题则修改配置:

# ONBOOT=no 改成 ONBOOT=yes # ifcfg-ens33该名称各主机可能不一样 vim /etc/sysconfig/network-scripts/ifcfg-ens33 reboot

2.1 修改服务器名称(可选)

查看主机名(Centos7)

less /etc/hostname

修改主机名
hostnamectl set-hostname master1.tgserver.xiyang.com

2 下载依赖包

3、服务器域名配置

vim /etc/hosts

例如:
44.5.10.195 nn1.gdjgj nn1
44.5.10.196 nn2.gdjgj nn2
44.5.10.197 dn1.gdjgj dn1
44.5.10.198 dn2.gdjgj dn2
44.5.10.199 dn3.gdjgj dn3
44.5.10.195 archive.cloudera.com (IP为yum源所在的机器IP地址)

4、关闭防火墙、禁止防火墙开机自启(每个节点)

- systemctl stop firewalld 关闭防火墙
- systemctl disable firewalld 禁止防火墙开机自启
- vim /etc/selinux/config —> SELINUX=disabled (修改)