CDH 全面扫盲(一)

前言

CDH搭建涉及到太多东西,有关硬件软件、也有关系统。之前总结时写了一份,自以为是较为完整的。但是后来发现,还是缺漏了好多东西,也有好多知识是点到为止,知其然不知其所以然,所以此次打算在先前的基础上补齐缺漏的知识点,然后争取一次性全部搞懂,避免下次花时间再复习N遍。

准备工作

系统版本

  • 需要Redhat (非定制版) / CentOS / Ubuntu …
    1
    2
    # 校验
    cat /etc/redhat-release

最小化安装

  • 在安装系统时,采用最小化安装,避免默认安装其他多余用不到的程序,占磁盘空间,还有一些不必要的服务运行着占内存,最小化安装时一般附带基本的yumvi/vim/nanossh就行。

配置主机名

  • 每个节点都要起名,相当于host
1
2
3
4
vi /etc/hostname
source /etc/profile
# 或者
hostnamectl set-hostname cdh1

设置静态IP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
vim /etc/sysconfig/network-scripts/ifcfg-enp2s0
# 编辑设置为固定IP
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="enp2s0"
UUID="5c447edd-1c2e-4910-bcaf-4892b56bd042"
DEVICE="enp2s0"
ONBOOT="yes"
IPADDR=172.16.10.6
NETMASK=255.255.255.0
GATEWAY=172.16.10.254
DNS1=202.96.128.86

# 改完后重启网卡,不需要关机(二选一)
/etc/init.d/network restart
service network restart

# 重启网卡后验证一下网络是否可用
ping www.baidu.com

配置 yum 源

默认 yum 源是去系统官网下载,下载地址都是在国外,所以下载速度会慢一大截,修改成国内源下载软件速度会快很多。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
cd /etc/yum.repos.d/
# 备份
mkdir backup
mv *.repo backup
# 下载网易源
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
vim CentOS7-Base-163.repo
:1,$s/$releasever/7/g
:wq!
# 清缓存
yum clean all
yum makecache
# 安装测试
yum –y install tree
# 源列表
yum repolist all

安装网络工具包

由于是最小化安装,所以默认缺少一些网络相关的软件,比如ipconfignetstat等等,需要安装网络工具包。

1
yum install net-tools

修改 Host

1
2
3
4
5
6
7
vi /etc/hosts
192.168.2.1 cdh1
192.168.2.2 cdh2
192.168.2.3 cdh3
192.168.2.4 cdh4
source /etc/hosts

永久关闭SElinux

  • SELinux是一个安全体系结构,它通过LSM (Linux Security Modules) 框架被集成到Linux Kernel 2.6.x中。它是NSA (United States National Security Agency)SELinux社区的联合项目。
  • 这个策略严谨而复杂,只有非常看重安全的用途而且需要专门的人员管理才需要,大数据集群用不到就关闭
  • 使用root用户
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # 查看状态
    sestatus
    # 临时关禁用(两钟方法)
    echo 0 > /selinux/enforce
    setenforce 0
    # 上面的方法只在下一次系统重新引导之前有效
    # 永久关闭
    vi /etc/sysconfig/selinux
    # 将 SELinux=enforcing 改为 SELinux=disabled
    # reboot重启电脑

关闭防火墙

  • 大数据很多组件涉及到很多的端口,提供各种RPC服务、Http服务等等。如果开启防火墙,需要频繁地放开XXXX端口,而大数据一般是内网,所以内网之间不需要设置防火墙。

    1
    2
    3
    4
    5
    6
    7
    # 查看状态/停止/禁用
    systemctl status firewalld
    systemctl stop firewalld
    systemctl disable firewalld
    # iptable
    service iptables stop
    chkconfig iptables off

Http容器

  • Http服务端,也可以是Nginx。用作yum本地源。
1
2
3
4
5
6
7
8
yum install httpd
vi /etc/httpd/conf/httpd.conf

<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Allow from all
</Directory>

数据库

一个是MySQL,一个是Mariadb,其中之一。

Mariadb

1
2
3
4
5
6
7
8
9
10
# 安装
yum -y install mariadb mariadb-server
# 启动
systemctl start mariadb
# 开机启动
systemctl enable mariadb
# 查看状态
systemctl status mariadb
# 安全安装
/usr/bin/mysql_secure_installation
  • 按照提示
    1. 空密码登录
    2. 设置 root 密码
    3. 是否删除访客用户
    4. 是否禁止 root 用户远程登录
    5. 是否删除 test 数据库
    6. 是否刷新设置生效

MySQL

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 下载包
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
# 安装MySQL源
yum -y install mysql57-community-release-el7-10.noarch.rpm
# 安装MySQL服务
yum -y install mysql-community-server
# 启动
systemctl start mysqld.service
# 查看状态
systemctl status mysqld.service
# 查看初始密码
grep "password" /var/log/mysqld.log
# 登录
mysql -uroot -p
# 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
# 允许远程连接
update user set host = '%' WHERE user = 'root';
# 刷新设置生效
flush privileges;
# (可选)卸载掉MySQL源
yum -y remove mysql57-community-release-el7-10.noarch
# 设置开机启动
systemctl enable mysqld
systemctl daemon-reload

数据库创建

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
-- 元数据库
create database metastore default character set utf8;
CREATE USER 'hive'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON metastore.* TO 'hive'@'%';
FLUSH PRIVILEGES;
-- cm
create database cm default character set utf8;
CREATE USER 'cm'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON cm.* TO 'cm'@'%';
FLUSH PRIVILEGES;
-- rm
create database rm default character set utf8;
CREATE USER 'rm'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON rm.* TO 'rm'@'%';
FLUSH PRIVILEGES;
-- am
create database am default character set utf8;
CREATE USER 'am'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON am.* TO 'am'@'%';
FLUSH PRIVILEGES;
-- hue
create database hue default character set utf8;
CREATE USER 'hue'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON hue.* TO 'hue'@'%';
FLUSH PRIVILEGES;
-- oozie
create database oozie default character set utf8;
CREATE USER 'oozie'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON oozie.* TO 'oozie'@'%';
FLUSH PRIVILEGES;
-- santry
create database sentry default character set utf8;
CREATE USER 'sentry'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON sentry. * TO 'sentry'@'%';
FLUSH PRIVILEGES;
-- nav_ms
create database nav_ms default character set utf8;
CREATE USER 'nav_ms'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON nav_ms. * TO 'nav_ms'@'%';
FLUSH PRIVILEGES;
-- nav_as
create database nav_as default character set utf8;
CREATE USER 'nav_as'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON nav_as. * TO 'nav_as'@'%';
FLUSH PRIVILEGES;

安装MySQL驱动

1
2
mkdir /usr/share/java

NTP 服务

  • 同步集群所有服务器时间
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 安装
yum -y install ntp
# 开机启动
systemctl enable ntpd
# 启动
systemctl start ntpd
# 修改配置文件
vi /etc/ntp.conf
# master
server 127.127.1.0
fudge 127.127.1.0 stratum 10
# 其他节点
server master的ip
# 重启生效配置
systemctl restart ntpd
# 查看同步状态
ntpq -p

制作 yum 源

  • 制作yum源,便于集群内网安装 CMCDH
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 安装 yum 仓库创建工具
yum install yum-utils createrepo
# 创建并进入目录,把安装包上传到文件夹中
cd /var/www/html/cdh5/5.16.2/cm5.16.2
# 创建仓库,生成 repodata 文件夹
createrepo .
# 添加新 cm 仓库
vi /etc/yum.repos.d/cm.repo
# 配置保存
[cloudera-manager]
name = Cloudera Manager, Version cloudera-repos
baseurl = http://master_ip/cdh5/5.16.2/cm5.16.2
gpgcheck = 0
enable = 1
# 清空 yum 重新建立缓存
yum clean all
yum makecache

集群节点免密登录(可选)

1
2
3
4
5
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
scp ~/.ssh/id_rsa.pub master:~/.ssh/authorized_keys
sudo chmod 700 ~/.ssh
sudo chmod 600 ~/.ssh/authorized_keys

Java 环境

要用CDH的专用JDK,不然可能出现不明崩溃,系统卡死。

1
2
3
4
# 安装
yum -y install oracle-j2sdk1.7-1.7.0+update67-1.x86_64
# 验证版本
java -version
文章作者: Shengyaqingfeng
文章链接: https://creazyboyone.github.io/cdh1/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Shengyaqingfeng's Blog