本文所用到的环境和软件如下:
三台CentOs6虚拟机
jdk-8u112-linux-x64
cloudera-manager-el6-cm5.9.3_x86_64.tar
CDH-5.9.3-1.cdh5.9.3.p0.4-el6
CM下载地址:https://archive.cloudera.com/cm5/cm/5/
CDH下载地址:http://archive.cloudera.com/cdh5/parcels/
一、安装环境准备
以下操作每台机器都要执行
可以先在一台执行然后克隆两台虚拟机或者三台虚拟机同时执行命令,不过克隆虚拟机的时候会把Mac地址也克隆过去,导致三台机器Mac地址相同无法联网,需要在另外两台克隆的机器上面先删除Mac地址然后重启让机器重新生成Mac地址。
1、配置网络
(1)配置网卡属性使各台机器能ping通外网(详细过程参考https://blog.csdn.net/zzf1510711060/article/details/80682480)
(2)在/etc/sysconfig/network中配置各台机器的主机名HOSTNAME,我这边是主节点为Master从节点为Slave
(3)在/etc/hosts文件中配置好主机名和ip地址的映射(注意:这里一定要写上localhost的映射是127.0.0.1,不然会出现Name or service not known的错误,这个错误也有可能是IP地址和Mac地址冲突引起的,解决方法是重命名或者删除/usr/bin/host文件)
2、关闭防火墙
//关闭防火墙服务
service iptables stop
//禁止开机启动防火墙服务
chkconfig iptables off
3、关闭SELINUX
编辑 /etc/selinux/config
修改SELINUX=disabled
4、配置免密码登录
//以dsa加密方式生成密钥
ssh-kegen -t dsa -P '' -f ~/.ssh/id_dsa
//将公钥写入本机的authorized_keys中
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
//将公钥拷贝到其他主机的/tmp目录下
scp ~/.ssh/id_dsa.pub slave01:/tmp/
scp ~/.ssh/id_dsa.pub slave02:/tmp/
//将公钥写入其他主机的authorized_keys中
cat /tmp/id_dsa.pub >> ~/.ssh/authorized_keys
//每台主机都执行上述操作,验证:用ssh 主机名可以免密码登录个主机
5、安装JDK
//检查本机安装的jdk
rpm -qa | grep jdk
//卸载本机自带的jdk
rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64
rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_6
//查询系统中java的相关目录
where java
//删除相关目录
rm -rf /etc/java
rm -rf /usr/lib/java
rm -rf /usr/share/java
//解压安装包
cd /opt
tar -zxvf jdk-8u112-linux-x64.tar.gz
//重命名
mv jdk1.8.0_112/ jdk
//配置环境变量
vim /etc/profile.d/cdh-etc.sh
加入以下内容
export JAVA_HOME=/opt/jdk
export PATH=$JAVA_HOME/bin:$PATH
//使环境变量生效
source /etc/profile.d/cdh-etc.sh
//测试jdk是否安装成功
java -version
6、安装Python2.7
注意:CDH6中的Hue需要用到Python2.7,如果安装的是CDH5那么用CentOs6自带的Python2.6就可以了,如果是CentOs7的话自带Python2.7。
因为在CentOs6中对Python2.6已经深度依赖,所以这里不卸载原来的2.6,安装2.7之后2.6和2.7并存
//更新yum以及安装开发工具集
yum -y update
yum groupinstall -y 'development tools'
//安装需要的相关软件包
yum install -y zlib-devel bzip2-devel openssl-devel xz-libs wget
//下载Python2.7.13源码
wget http://www.python.org/ftp/python/2.7.13/Python-2.7.13.tar.xz
//解压源码压缩包
tar -zxvf Python-2.7.13.tar.xz
//进入解压后的文件夹
cd Python-2.7.13
//运行配置
./configure --prefix=/usr/local
//编译和安装
make
make altinstall
//设置软连接
ln -s /usr/local/bin/python2.7 /usr/bin/python
#因为yum依赖Python2.6,所以安装2.7之后会导致yum不能用,解决方法如下
vim /usr/bin/yum
#!/usr/bin/python 改为 #!/usr/bin/python2.6
如还需安装pip和setuptools参考文章:https://blog.csdn.net/lusijie1/article/details/78624774
7、安装NTP时间同步服务
//通过yum安装ntp
yum install -y ntp
//设置ntp服务开机启动
chkconfig ntpd on
//设置时间同步
ntpdate -u s2m.time.edu.cn
//启动服务
service ntpd start
8、安装相关依赖包
yum install -y chkconfig python bind-utils psmisc libxslt zlib sqlite cyrus-sasl-plain cyrus-sasl-gssapi fuse fuse-libs redhat-lsb
MySql只需要在主节点上安装即可
//安装mysql服务
yum install -y mysql-server
//启动mysql服务
service mysqld start
//设置mysql服务开机启动
chkconfig mysqld on
//进行用户名密码设置
mysql_secure_installation
//登录mysql客户端
mysql -uroot -p
//对远程可访问的主机进行授权,这里授权的用户是root,可以根据需求修改不同的用户
grant all privileges on *.* to 'root'@'%' identified by '自定义密码' with grant option;
//刷新权限
flush privileges;
配置/etc/my.conf文件,官方推荐配置如下:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
transaction-isolation = READ-COMMITTED
# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
symbolic-links = 0
key_buffer_size = 32M
max_allowed_packet = 32M
thread_stack = 256K
thread_cache_size = 64
query_cache_limit = 8M
query_cache_size = 64M
query_cache_type = 1
max_connections = 550
#expire_logs_days = 10
#max_binlog_size = 100M
#log_bin should be on a disk with enough free space.
#Replace '/var/lib/mysql/mysql_binary_log' with an appropriate path for your
#system and chown the specified folder to the mysql user.
log_bin=/var/lib/mysql/mysql_binary_log
#In later versions of MySQL, if you enable the binary log and do not set
#a server_id, MySQL will not start. The server_id must be unique within
#the replicating group.
server_id=1
binlog_format = mixed
read_buffer_size = 2M
read_rnd_buffer_size = 16M
sort_buffer_size = 8M
join_buffer_size = 8M
# InnoDB settings
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 64M
innodb_buffer_pool_size = 4G
innodb_thread_concurrency = 8
innodb_flush_method = O_DIRECT
innodb_log_file_size = 512M
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
sql_mode=STRICT_ALL_TABLES
二、Cloudera Manager安装
1、上传软件包到三台虚拟机并解压到目录/opt/cloudera-manager
//创建/opt/cloudera-manager目录
mkdir /opt/cloudera-manager
cd /opt/cloudera-manager
//解压压缩包到该目录
tar -zxvf cloudera-manager-el6-cm5.9.3_x86_64.tar.gz -C /opt/cloudera-manager
2、三台虚拟机创建CM用户cloudera-scm
sudo useradd --system --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
3、Agent节点配置server_host
//修改文件
/opt/cloudera-manager/cm-5.9.3/etc/cloudera-scm-agent/config.ini
//将server_host设置成主节点的主机名
4、配置CM Server数据库
注意:配置数据库之前需要将mysql驱动jar包拷贝到目录/usr/share/java中,并将jar包名称修改为mysql-connector-java.jar
//进入mysql,创建一个临时用户并附有所有权限
mysql -uroot -p
grant all on *.* to 'temp'@'%' identified by 'temp' with grant option;
//进入schema目录
cd /opt/cloudera-manager/cm-5.9.3/share/cmf/schema/
//执行数据库脚本
//脚本参数的含义为:数据库类型、数据库、数据库服务器、用户名、密码、cm server服务器,最后的三个scm是固定的。
./scm_prepare_databases.sh mysql temp -h master -utemp -ptemp --scm-host master scm scm scm
//最后删除临时用户
delete from user where user='temp'
#如果不创建临时用户,可以创建scm用户
grant all on *.* to 'scm'@'localhost' identified by 'temp' with grant option;
//创建scm数据库
create database scm;
//执行脚本
/opt/cloudera-manager/cm-5.14.1/share/cmf/schema/scm_prepare_database.sh mysql scm scm scm
//因为cm之后还会用到scm用户所以scm用户不用删除
//脚本执行完之后看到
[ main] DbCommandExecutor INFO Successfully connected to database.
All done, your SCM database is configured correctly!
说明执行成功!
5、创建Parcel目录
Server节点
//创建目录parcel-repo并赋予cloudera-scm用户权限
mkdir -p /opt/cloudera/parcel-repo
chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo
Agent节点
//创建目录parcels并赋予cloudera-scm用户权限
mkdir -p /opt/cloudera/parcels
chown cloudera-scm:cloudera-scm /opt/cloudera/parcels
6、启动Server、Agent
//进入init.d目录
cd /opt/cloudera-manager/cm-5.14.1/etc/init.d
//主节点启动Server和Agent
./cloudera-scm-server start
//从节点启动Agent
./cloudera-scm-agent start
#如果需要安装CDH这里可以先不启动,等下面制作完CDH本地源之后再启动
Master | Slave01 | Slave02 |
Server、Agent | Agent | Agent |
三、CDH安装
1、CDH的安装方式(本文使用第一种安装方式)
(1)通过Cloudera Manager安装
(2)通过Yum安装
(3)通过Rpm包安装
(4)编译源代码安装
2、通过CM安装CDH
(1)制作CDH本地源
http://archive.cloudera.com/cdh5/parcels/下载文件
CDH-5.9.3-1.cdh5.9.3.p0.4-el6.parcel
manifest.json
CDH-5.9.3-1.cdh5.9.3.p0.4-el6.parcel.sha
并把上面三个文件放到server节点的/opt/opt/cloudera/parcel-repo/下,如果有些版本没有CDH-5.9.3-1.cdh5.9.3.p0.4-el6.parcel.sha文件,那么新建文件,文件名和parcel包一致并加上.sha后缀,在manifest.json中找到对应版本的hash码复制到文件中保存。
(2)启动CM Server、Agent
第一次启动会在数据库中写入元数据信息,启动的可能比较慢
启动完成之后就可以用浏览器(建议使用谷歌和火狐)登录http://master:7180根据提示步骤执行以下操作安装相关服务,初始用户名和密码都是admin。
(3)选择节点
(4)选择本地Parcel
(5)进行主机检查(主机检查时可能会出现几个警告,根据提示修改相关配置就可以)
(6)选择需要安装的服务(建议不要全部安装,集群可能资源不足跑不起来)
(7)主机角色设置(配置服务的各个角色到各台主机)
(8)数据库设置(有些服务需要写入元数据那么就需要设置数据库,比如hive,hue等,先在数据库中创建相对应的库然后根据网页提示操作即可,这里hue的数据库连接的时候可能会提示测试连接失败,这时候在角色设置的时候把hue的主节点角色设置到安装数据库的那台主机上即可)
(9)安装完成
参考文章:
https://www.cloudera.com/documentation/enterprise/6/6.0/topics/install_cm_cdh.html
https://www.linuxidc.com/Linux/2018-03/151491.htm
https://blog.csdn.net/u014034049/article/details/78439578