题记:最近使用 VirtualBox 安装CDH,通过host-only + NAT 形式配置网络时,配置起来数次失败。遂选用VMware Fusion 重新尝试。
使用素材
硬件 | 环境配置 | Master * 1: 10G + 6C + 30G Slave * 2:64G + 2C + 20G | 下载地址 |
软件 | 虚拟机平台 | VMware Fusion 11 | |
操作系统 | CentOS-7-x86_64-Minimal-1810 | ||
cloudera Manager | cloudera-manager-centos7-cm5.12.1_x86_64 | http://archive.cloudera.com/cm5/cm/5/cloudera-manager-el6-cm5.12.1_x86_64.tar.gz | |
CDH | CDH-5.12.1-1.cdh5.12.1.p0.3-el7 | ||
| jdk | jdk1.8.0_201 | https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html |
目录
- 安装 VMware Fusion
- 操作系统的安装及配置
- 安装Cloudera Manager
- 页面新增服务
安装 VMware Fusion
1.VMware Fusion介绍
VMware Fusion 支持 DirectX 10 的 3D 图像加速、OpenGL 3.3 和 USB 3.0以及不同 DPI 的多种显示屏。VMware 虚拟机平台同样支持 64 位系统,单个虚拟机最高支持 16 vCPU(虚拟处理器),64GB RAM 和 8TB 的硬盘。VMware Fusion为最新的 Mac 进行了优化,包括配备 5K 显示屏的 iMac 和 12 英寸 MacBook,DirectX 10 支持 Mac 用户在 5K 显示屏下以原生分辨率运行 Windows 虚拟机,此外它们还支持 MacBook 上的 USB-C 和 Force Touch 技术。
2.资源下载
3.安装及破解
a。解压(可以使用默认的归档工具或者其他第三方工具)已下载到本地的 VMware fusion.11.dmg.zip 得到软件 VMware fusion.11.dmg。
b。双击安装 VMware fusion.11.dmg 文件,一通傻瓜式操作。在选择软件使用权限的时候(如下图)输入密钥。使用图中序列号或者下方序列号进行尝试。
VMware Fusion 11序列号:
7HYY8-Z8WWY-F1MAN-ECKNY-LUXYX
FF79U-2QG54-M84TY-2GYXE-WC28F
VV5WK-A6DEQ-081MP-34X59-Z20ZD
ZG5HH-8NX00-489FP-46X5Z-ZQAW6
ZG5HH-8NX00-489FP-46X5Z-ZQAW6
VF34R-6WW0H-H8EVP-MQYEE-Z3UY8
4。安装虚拟机软件
a。 点击左上角 +号 选择 新建
d。直接将需要安装的操作系统镜像文件拖入光盘处
e。默认操作 继续到底 不要点击完成,我们需要做一些配置简化后续的操作
f。自定义配置(重要)
i。处理器和内存
上面说过主节点需要至少10G的物理内存,这里可以自定义,但是遵从越大越好的原则。
ii。硬盘
iii。网络适配器
集群想要通信最重要的就是网络的畅通,我们这边使用host-only + NAT的网络模式为 集群提供访问互联网及宿主机的网络。
我们先了解一下网络模式:
Host-only(主机模式):
Host-Only模式其实就是NAT模式去除了虚拟NAT设备,然后使用VMware Network Adapter VMnet1虚拟网卡连接VMnet1虚拟交换机来与虚拟机通信的,Host-Only模式将虚拟机与外网隔开,使得虚拟机成为一个独立的系统,只与主机相互通讯。虚拟系统的TCP/IP配置信息(如IP地址、网关地址、DNS服务器等),都是由VMnet1(host-only)虚拟网络的DHCP服务器来动态分配的。其网络结构如下图所示:
NAT(网络地址转换模式)
使用NAT模式,就是让虚拟系统借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网也就是说,使用NAT模式可以实现在虚拟系统里访问互 联网NAT模式下的虚拟系统的TCP/IP配置信息是由VMnet8(NAT)虚拟网络的DHCP服务器提供的,无法进行手工修改,因此虚拟系统也就无法 和本局域网中的其他真实主机进行通讯采用NAT模式最大的优势是虚拟系统接入互联网非常简单,你不需要进行任何其他的配置,只需要宿主机器能访问互联网即可。
Bridged(桥接模式)
桥接模式就是将主机网卡与虚拟机虚拟的网卡利用虚拟网桥进行通信。在桥接的作用下,类似于把物理主机虚拟为一个交换机,所有桥接设置的虚拟机连接到这个交换机的一个接口上,物理主机也同样插在这个交换机当中,所以所有桥接下的网卡与网卡都是交换模式的,相互可以访问而不干扰。在桥接模式下,虚拟机ip地址需要与主机在同一个网段,如果需要联网,则网关与DNS需要与主机网卡一致。其网络结构如下图所示:
此时,为什么选用host-only + NAT网络模式就很清楚了:host-only 可以为集群节点提供固定的IP地址,NAT可以方便虚拟机借用宿主机访问互联网。
具体配置如下:
我们需要两个适配器:
适配器1:使用 NAT 网络模式
适配器2:
添加设备:
选择网络适配器并配置:
如果发现并网络适配器配置清单中没有 仅供我的 Mac 专用 (step 3 指向),需要进行如下操作。
使用terminal 修改 /Library/Preferences/VMware\ /Fusion/networking 文件 提供如下图所示的配置:
如果没有host-only 的VNET_1 可以自行添加,如果有则修改即可。
iiii。启动安装向导
安装过程中一路continue 的傻瓜式操作,我们只需注意将时间定为 shanghai,网络打开即可。如果您是第一次安装 Cent os ,请点击这里将会有更详细的安装过程介绍。
iiiii。等待安装结束,重启虚拟机,使用安装时创建的root 用户登入
此时我们的应该是可以访问到互联网的,ping一下百度试试。
却无法与宿主姐进行通信,ping下宿主机。
修改host-only网卡的配置信息
$ vi /etc/sysconfig/network-scripts/ifcfg-ens34
重启网络
$ systemctl restart network
网络服务启动中或者ping命令中遇到 rtnetlink answers file exists
可参考以下方式:
第一种: 和 NetworkManager 服务有冲突,这个好解决,直接关闭 NetworkManger 服务就好了, service NetworkManager stop,并且禁止开机启动 chkconfig NetworkManager off 。之后重启就好了。
第二种:和配置文件的MAC地址不匹配,这个也好解决,直接修改 /etc/udev/rules.d/70-persistent-net.rules文件的MAC地址和 /etc/sysconfig/network-scripts/ifcfg-eth0一样就好了。
可以查看network 服务启动状态
$ systemctl status network
如果有 LSB: Bring up/down networking
可以通过以下方法解决:
网络问题解决了,集群主节点的虚拟机也就准备就绪了。另外两台从节点我们可以依葫芦画瓢弄两台。
Cloudera Manager 的安装
1.简介:
CDH(Cloudera's Distribution, includingApache Hadoop):Hadoop众多分支中的一种,由Cloudera维护,基于稳定版本的Apache Hadoop构建,并集成了很多补丁,可直接用于生产环境。
ClouderaManager(本文以下简称为CM):为了便于在集群中进行Hadoop等大数据处理相关的服务安装和监控管理的组件,对集群中主机、Hadoop、Hive、Spark等服务的安装配置管理做了极大简化。架构图如图1所示。
官方参考文档:
https://www.cloudera.com/documentation/enterprise/latest/topics/installation.html
官方共给出了3种安装方式:
方法一:必须要求所有机器都能连网,由于各种国外的网站被墙的厉害,尝试了几次各种超时错误,耽误时间不说,一旦失败,重装非常痛苦。
方法二:下载很多包,不方便容易迷路。
方法三:对系统侵入性最小,可实现全离线安装,而且重装非常方便。后期的集群统一包升级也非常好。(本篇采用该方法安装)
2.资源准备:
Cloudera Manager下载地址:
http://archive.cloudera.com/cm5/cm/5/cloudera-manager-el6-cm5.12.1_x86_64.tar.gz
CDH安装包地址:(此处需要根据自己的操作系统决定下载版本 Centos6 = *-el6.parcel/Centos7 = *-el7.parcel)
http://archive.cloudera.com/cdh5/parcels/latest/
3.环境准备:
3.1配置hosts
$ vi /etc/hosts
填入集群hosts信息
!!!注意!!!
把前两行注释掉,否则在cloudera manager server启动时可能会报异常。
3.1JDK
每台均需要安装,保证版本及安装路径一致,以免出现找不到 JAVA_HOME 的问题。
因为我们使用的是host-only + NAT所以 安装方式就比较多了,离线或者在线安装均可。
此处选择使用 JDK1.8.0_201 的离线安装方式:
资源获取:
上传至虚拟机 /tooles/目录下
$ tar -zxvf jdk-*.tar.gz -C /usr/java
配置环境变量
$ vi /etc/profile
在文件末尾添加
#PATH/CLASS_PATH
export JAVA_HOME=/usr/java/jdk1.8.0_201
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
使环境变量生效
$ source /etc/profile
检查环境变量是否生效
$ java -version
显示java版本信息则证明环境变量配置生效。
最后,重复如上动作,给剩余其他节点都安装好jdk。
3.2Mysql
仅安装主节点即可。
3.2.1 创建系统需要用到的一些目录
安装文件下载目录:/opt/software/mysql
数据库保存位置:/data/mysql
日志保存位置:/data/log/mysql
3.2.2下载mysql
官网:http://dev.mysql.com/downloads/mysql/
我选择的是如下版本(具体不同版本的兼容与支持可查询官网,在此不再赘述)
上传tar包到我们建好的软件目录/tooles下
解压缩到/usr/local/ 目录下
$ tar -zxvf mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
改名
$ mv mysql-5.7.13XXXXXX mysql
3.2.3创建mysql用户用户组及目录
$ groupadd mysql
$ useradd -r -s /sbin/nologin -g mysql mysql -d /usr/local/mysql
该用户禁止shell登录,同时修改用户目录权限
$ cd /usr/local/mysql# chown -R mysql .# chgrp -R mysql .
$ chown -R mysql:mysql /data/mysql/
$ chown -R mysql:mysql /data/log/
3.2.4初始化MYSQL
$ ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
部分人的linux系统会出现如下错误
#cannot open shared object file:No such file or directory
这是因为缺少安装包libaio和libaio-devel导致的不用紧张yum来帮忙
$ yum install libaio*
#Complete!成功
再次执行初始化命令
出现上述即为成功,记得把初始化的密码copy下来噢
然后再执行命令
$ ./bin/mysql_ssl_rsa_setup --datadir=/data/mysql
3.2.5修改系统配置文件
进入support-files目录
$cd /usr/local/mysql/support-files
执行命令:
$ cp my-default.cnf /etc/my.cnf
$ cp mysql.server /etc/init.d/mysql
修改以下内容:
$ vi /etc/init.d/mysql
$ vi /etc/my.cnf
修改内容修改为如下:
[client]
port = 3306
socket = /usr/local/mysql/mysql.sock
[mysql]
no-auto-rehash
default-character-set=utf8
[mysqld]
socket = /usr/local/mysql/mysql.sock
basedir = /usr/local/mysql
max_allowed_packet = 64M
datadir = /data/mysql
explicit_defaults_for_timestamp = true
skip-ssl
secure-file-priv = NULL
lower_case_table_names = 1
back_log = 300
max_connections = 3000
max_connect_errors = 100
table_open_cache = 4096
external-locking = FALSE
max_allowed_packet = 64M
sort_buffer_size = 32M
join_buffer_size = 32M
thread_cache_size = 16
query_cache_size = 128M
query_cache_limit = 4M
thread_stack = 512K
transaction_isolation = REPEATABLE-READ
tmp_table_size = 128M
max_heap_table_size = 128M
character-set-server=utf8
long_query_time = 6
slow_query_log_file = /data/log/mysql/slow.log
[mysqld_safe]
open-files-limit = 8192
log-error=/data/log/mysql/mysql_3306.err
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
3.2.6运行mysql
$ ./bin/mysqld_safe --user=mysql &
$ ./bin/mysql --user=root -p
输入3.2.4步我们copy下来的密码 回车
依次输入以下命令:
mysql> set password=password('root');--修改密码
mysql> grant all privileges on *.* to
(*代表所有用户,@表示对某个用户组生效,直接写用户名表示对某个用户生效)
3.6.配置NTP时间同步
时间不同步,会导致集群无法启动,所以时间同步也是非常重要的一步。
集群作为一个小群体,只要能保证集群内部时间同步即可。故,主节点作为时间ntp服务器,为从节点提供时间同步服务。
一般的同步是直接使用ntpdate,但是这样跳崖式的时间变动会导致一些意想不到的问题。所以此处利用ntp服务器主动同步时间的
机制,实现集群时间平滑同步。
3.6.1安装ntp
$ yum install ntp
3.6.2配置ntp
备份原始ntp.conf
$ cp /etc/ntp.conf /etc/ntp.conf.backup
修改ntp.conf
$ vi/etc/ntp.conf
主节点配置:
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
server 127.127.1.0
fudge 127.127.1.0 stratum 10
从节点配置:
server master's hostname
3.6.3设置ntp开机自启:
$ chkconfig ntpd on
检查是否设置成功:
$ chkconfig --list ntpd
其中2-5为on状态就代表成功。
3.7 设置swap交换空间(all)
Cloudera建议将交换空间设置为0,过多的交换空间会引起GC耗时的激增,所以还是关闭的为好。
$ echo "vm.swappiness = 0" >> /etc/sysctl.conf
3.8关闭大页面压缩(all)
立即生效
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
查看
cat /sys/kernel/mm/transparent_hugepage/enabled
cat /sys/kernel/mm/transparent_hugepage/defrag
永久生效
echo 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' >> /etc/rc.local
echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local
3.9 ssh免密登陆(all)
$ ssh-keygen -t rsa
$ ssh-copy-id user@hostname
ssh-copy-id 命令只能打通本机和目标机的ssh免密登陆,所以需要三台服务器之间两两之间都执行。
如:A--B 和B--A是需要分别在A和B上各执行一次。
4 安装cloudera manager
4.1 server端安装
cloudera manager的目录默认在/opt下,cdh5的源会默认在/opt/cloudera/parcel-repo寻找,所以不能解压到其他地方,使用命令
$ tar xzvf cloudera-manager*.tar.gz -C /opt/
复制驱动
$ cp /tooles/mysql-connector*.jar /opt/cm-5.12.1/share/cmf/lib/
初始化CM5的数据库:
$ /opt/cm-5.12.1/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -p123123 --scm-host localhost scm scm scm
修改主节点信息
$ /opt/cm-5.12.1/etc/cloudera-scm-agent/config.ini
# server_host=master's hostname
5.Agent端安装
将 /opt/cm-5.12.1 和 /opt/cloudera 从主节点下发到从节点
$ scp /opt/cm-5.12.1 root@slaver1:/opt/
$ scp /opt/cm-5.12.1 root@slaver2:/opt/
$ scp /opt/cloudera root@slaver1:/opt/
$ scp /opt/cloudera root@slaver2:/opt/
在所有节点创建cloudera-scm用户
$ useradd --system --home=/opt/cm-5.12.1/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
6准备parcels
将我们提前下载好的Parcels文件上传到主节点的/opt/cloudera/parcel-repo/目录中(如果没有parcel-repo需要手动创建,这里不需要分发到所有节点)。
将CDH-5.12.1-1.cdh5.12.1.p0.3-el6.parcel.sha1 重命名为CDH-5.12.1-1.cdh5.12.1.p0.3-el6.parcel.sha
$ mv /opt/cloudera/CDH-5.12.1-1.cdh5.12.1.p0.3-el6.parcel.sha1 /opt/cloudera/CDH-5.12.1-1.cdh5.12.1.p0.3-el6.parcel.sha1
7.启动CM
server端:
启动:/opt/cm-5.12.1/etc/init.d/cloudera-scm-server start
停止:/opt/cm-5.12.1/etc/init.d/cloudera-scm-server stop
状态:/opt/cm-5.12.1/etc/init.d/cloudera-scm-server status
Agent端:
启动:/opt/cm-5.12.1/etc/init.d/cloudera-scm-agent start
停止:/opt/cm-5.12.1/etc/init.d/cloudera-scm-agent stop
状态:/opt/cm-5.12.1/etc/init.d/cloudera-scm-agent status
service服务启动需要几分钟,取决于服务器的性能,此时我们可以使用
$ netstat -apn|grep 7180
端口被占用后,就可以用浏览器打开http://masterIP:7180/进行访问了,登录用户名与密码分别为admin。
安装CDH
安装CDH完全可以通过cm的页面操作,以下仅以安装基础服务为例
版本选择
选择监控刚才安装的集群
接下来是服务器检查,如果前面严格按照步骤一步步做下来这里应该是不会出现任何问题的,全绿通过。点击完成。
接下来是选择安装服务,根据需要按需选择就好,点击继续
服务配置,一般情况下保持默认就可以了,也可以自己手动根据节点情况进行分配,点击继续
恭喜安装成功!