CDH5.7.2在Centos7下面离线搭建集群详解

来源:互联网 发布:安徒生 知乎 编辑:程序博客网 时间:2024/06/03 18:55
  • JDK环境

版本:jdk-8u101-linux-x64.rpm

  • MySQL-5.6.26-1.linux_glibc2.5.x86_64.rpm-bundle.tar
    jdbc连接包mysql-connector-java.jar:

  • CDH安装相关的包

cloudera manager包 :5.7.2 cloudera-manager-centos7-cm5.7.2_x86_64.tar.gz
下载地址:http://archive.cloudera.com/cm5/cm/5/cloudera-manager-centos7-cm5.7.2_x86_64.tar.gz

CDH-5.7.2-1.cdh5.7.2.p0.18-el7.parcel

CDH-5.7.2-1.cdh5.7.2.p0.18-el7.parcel.sha1

manifest.json
以上三个下载地址在http://archive.cloudera.com/cdh5/parcels/5.7.2/,注意centos要下载el7的。

  • 虚拟机准备:安装略过,准备3台虚拟机
    192.168.10.1
    192168.10.2
    192.168.10.3

开始安装前配置和预装软件

1.安装JDK(所有机子都要安装)
具体怎么安装我就不解释了,相信大家都会,真不会自己就去百度。
(注意一点:CDH默认寻找的JDK路径在 /usr/java/default/ 这个路径下面,要是装在别的地方可以使用 ln -s 这个命令创建软连接,千万注意,不然会报错)

2.修改每台节点服务器的有关配置hostname、selinux关闭,防火墙关闭
hostname修改:分别对三台都进行更改,并且注意每台名称和ip,每台都要配上hosts

[root@daojia01~]# vi /etc/sysconfig/networkNETWORKING=yesHOSTNAME=daojia01
[root@daojia01~]# vi /etc/hosts127.0.0.1 localhost.daojia01192.168.10.1  daojia01192.168.10.2  daojia02192.168.10.3  daojia03

selinux关闭(所有节点官方文档要求)

[root@daojia01~]# vi /etc/sysconfig/selinuxSELINUX=disabled重启才能生效重启后检查[root@hadoop1~]#sestatus -vSELinux status: disabled表示已经关闭了

关闭防火墙(注意centos 6 防火墙好像是iptables,这里是Centos7)

[root@daojia01~]# systemctl stop firewalld[root@daojia01~]# systemctl disable firewalldrm '/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service'rm '/etc/systemd/system/basic.target.wants/firewalld.service'[root@daojia01~]# systemctl status firewalldfirewalld.service - firewalld - dynamic firewall daemon   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled)   Active: inactive (dead)

NTP服务器设置(用于不同节点间实现时间同步)

NTP服务的安装和配置[root@daojia01~]#yum -y install ntp更改master的节点[root@daojia01~]## vi /etc/ntp.conf注释掉所有server *.*.*的指向,新添加一条可连接的ntp服务器(百度一下ntp服务器)server ntp.sjtu.edu.cn iburst在其他节点上把ntp指向master服务器地址即可(/etc/ntp.conf下)server 192.168.10.1 iburst所有节点

Centos7自带时间同步chrony,本人就是使用的chrony服务配置的时间同步,看个人喜好操作,不强求

SSH无密码登录配置
安装过程中master需要各个节点的root免登录密码
先在master上生成公钥

[root@daojia01]# ssh-keygen -t rsaGenerating public/private rsa key pair.Enter file in which to save the key (/root/.ssh/id_rsa): [enter]Created directory '/root/.ssh'.Enter passphrase (empty for no passphrase): [enter]Enter same passphrase again: [enter]Your identification has been saved in /root/.ssh/id_rsa.Your public key has been saved in /root/.ssh/id_rsa.pub.The key fingerprint is:1d:b1:99:51:31:d8:f6:6c:b1:84:f9:af:7b:2c:72:dd root@hadoop1The key's randomart image is:+--[ RSA 2048]----+|          o+++   ||          .*=.o  ||          =. = o ||         . .  *  ||        S .  . . ||                .||               +.||            . + E||             o.+ |+-----------------+[root@hadoop1]# ssh-copy-id 192.168.160.131The authenticity of host '192.168.160.131 (192.168.160.131)' can't be established.ECDSA key fingerprint is e6:81:3f:9e:e6:bb:43:36:c7:4e:0f:6f:63:b2:12:a0.Are you sure you want to continue connecting (yes/no)? yes/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keysroot@192.168.160.131's password: Number of key(s) added: 1Now try logging into the machine, with:   "ssh '192.168.160.131'"and check to make sure that only the key(s) you wanted were added.

分别对两台节点进行以上操作,操作完了可以通过ssh ip进行验证是否可以无需输入密码就能直接登录到节点服务器上去,复制秘钥的时候使用一个简单的方法命令

ssh-copy-id 主机名

安装mysql
centos7自带的是mariadb,需要先卸载掉

[root@hadoop1]# rpm -qa | grep mariadbmariadb-libs-5.5.41-2.el7_0.x86_64[root@hadoop1 huxin]# rpm -e --nodeps mariadb-libs-5.5.41-2.el7_0.x86_64

将下载好的mysql rpm包拷贝到服务器上然后解压

[root@hadoop1]# tar -xvf  MySQL-5.6.24-1.linux_glibc2.5.x86_64.rpm-bundle.tar 

然后安装释出的全部rpm:rpm -ivh MySQL-*.rpm
修改配置文件路径:cp /usr/share/mysql/my-default.cnf /etc/my.cnf
在配置文件中增加以下配置并保存

[root@hadoop1]#vim /etc/my.cnf[mysqld]default-storage-engine = innodbinnodb_file_per_tablecollation-server = utf8_general_ciinit-connect = 'SET NAMES utf8'character-set-server = utf8

以上就是安装好了。然后就初始化mysql
然后初始化数据库执行

[root@daojia01]#/usr/bin/mysql_install_db

注意这个时候我遇到以下问题:

"FATAL ERROR: please install the following Perl modules before executing /usr/local/mysql/scripts/mysql_install_db:Data::Dumper "

需要安装perl-Module

[root@hadoop1 ~]# yum install -y perl-Module-Install.noarch

注意:说一下在这里遇到的坑,使用rpm方式安装mysql的时候,会提示依赖错误,这是在安装命令后面加 –nodeps –force这个命令,如

rpm -ivh MySQL-*.rpm --nodeps --force

这个命令的意思就是忽视依赖关系,强制安装

本人在Centos7上面装MYsql,还遇到另外的一个问题,mysql安装失败,需要你彻底卸载mysql(具体彻底卸载mysql的方法,百度去查),
由于CentOS7 已经不支持mysql,因为收费了你懂得,所以内部集成了mariadb,而安装mysql的话会和mariadb的文件冲突,所以需要先卸载掉mariadb,卸载掉mariadb,安装mysq还是报错,因为你的Centos7上面没有安装mysql依赖,具体这样操作:

yum install vim libaio net-tools

其他情况:

centos下yum暂时没有mysql-server直接安装包;
MariaDB是MySQL社区开发的分支,也是一个增强型的替代品;

以上基本安装mysql时候遇到的问题就全部解决,现在开始初始化MySql

[root@daojai01]#/usr/bin/mysql_install_db
- 启动mysql[root@daojia01]# service mysql restart ERROR! MySQL server PID file could not be found!Starting MySQL... SUCCESS! - 查看mysql root初始化密码[root@hadoop1]# cat /root/.mysql_secret# The random password set for the root user at Fri Sep 16 11:13:25 2016 (local time): 9mp7uYFmgt6drdq3- 登录进行去更改密码[root@hadoop1]# mysql -u root -pmysql> SET PASSWORD=PASSWORD('123456');- 允许mysql远程访问mysql> update user set host='%' where user='root' and host='localhost';Query OK, 1 row affected (0.05 sec)Rows matched: 1  Changed: 1  Warnings: 0mysql> flush privileges;Query OK, 0 rows affected (0.00 sec)- 配置开机启动[root@hadoop1]# chkconfig mysql on

拷贝mysql-connector-java到各个节点指定目录下(所有的节点)

[root@hadoop1]# cp mysql-connector-java-5.1.36-bin.jar /usr/share/java/mysql-connector-java.jar

注意:mysql的jar包必须拷贝到这个目录,没有目录,自己去创建

创建数据库:

create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;Query OK, 1 row affected (0.00 sec)grant all on *.* to root@"%" Identified by "123456";

我现在只用到hive,其他的就不去创建了。

安装Cloudera-Manager

  • 解压cm tar包在opt目录下,所有服务器都要(或者在主节点解压好,然后通过scp到各个节点同一目录下)
  • -
[root@daojia01~]# tar -axvf cloudera-manager-centos7-cm5.7.2_x86_64.tar.gz 
  • 创建cloudera-scm用户(所有节点)
[root@daojia01~]# useradd --system --home=/opt/cloudera-manager/cm-5.7.2/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
  • 在主节点创建cloudera-manager-server的本地元数据保存目录
[root@daojia01~]# mkdir /var/cloudera-scm-server[root@daojia01~]# chown cloudera-scm:cloudera-scm /var/cloudera-scm-server[root@daojia01~]# chown cloudera-scm:cloudera-scm /opt/cm5.7.2
  • 配置从节点cloudera-manger-agent指向主节点服务器
vi /opt/cm-5.7.2/etc/cloudera-scm-agent/config.ini将server_host改为CMS所在的主机名即daojia01
  • 主节点中创建parcel-repo仓库目录
[root@daojia01~]# mkdir -p /opt/cloudera/parcel-repo[root@daojia01~]# chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo[root@daojia01~]# cp CDH-5.7.2-1.cdh5.7.2.p0.18-el7.parcel CDH-5.7.2-1.cdh5.7.2.p0.18-el7.parcel.sha manifest.json /opt/cloudera/parcel-repo注意:其中CDH-5.7.2-1.cdh5.7.2.p0.18-el5.parcel.sha1 后缀要把1去掉
  • 所有节点创建parcels目录
[root@daojia01~]# mkdir -p /opt/cloudera/parcels[root@daojia01~]# chown cloudera-scm:cloudera-scm /opt/cloudera/parcels解释:Clouder-ManagerCDHs从主节点的/opt/cloudera/parcel-repo目录中抽取出来,分发解压激活到各个节点的/opt/cloudera/parcels目录中】
  • 初始脚本配置数据库scm_prepare_database.sh(在主节点上)
[root@hadoop1 ~]# /opt/cm-5.7.2/share/cmf/schema/scm_prepare_database.sh mysql -hdaojia01 -uroot -p123456 --scm-host daojia01 scm scm scmd说明:这个脚本就是用来创建和配置CMS需要的数据库的脚本。各参数是指:mysql:数据库用的是mysql,如果安装过程中用的oracle,那么该参数就应该改为oracle。-hdaojia01:数据库建立在daojia01主机上面。也就是主节点上面。-uroot:root身份运行mysql。-123456:mysql的root密码是123456--scm-host daojia01:CMS的主机,一般是和mysql安装的主机是在同一个主机上。最后三个参数是:数据库名,数据库用户名,数据库密码。

注意:如果执行的时候报一下错误,可能是配置host的有问题,127.0.0.1 localhost.hadoop1 这个localhost不能少.

ERROR com.cloudera.enterprise.dbutil.DbProvisioner  - Exception when creating/dropping database with user 'root' and jdbc url 'jdbc:mysql://localhost/?useUnicode=true&characterEncoding=UTF-8'java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)

这里我也遇到以下另一个问题

ERROR com.cloudera.enterprise.dbutil.DbProvisioner  - Exception when creating/dropping database with user 'root' and jdbc url 'jdbc:mysql://localhost/?useUnicode=true&characterEncoding=UTF-8'java.sql.SQLException: Your password has expired. To log in you must change it using a client that supports expired passwords.这里可以重新设置mysql的数据,然后刷新,或者直接将过期设置不检测mysql> update user set password_expired='N' where user='root';Query OK, 2 rows affected (0.00 sec)Rows matched: 5  Changed: 2  Warnings: 0mysql> flush privileges;
  • 启动主节点cloudera-scm-server
[root@daojia01~]# cp /opt/cm-5.7.2/etc/init.d/cloudera-scm-server /etc/init.d/cloudera-scm-server[root@daojia01~]#chkconfig cloudera-scm-server on

此时service cloudera-scm-serverstart的话会报错:“File not found: /usr/sbin/cmf-server”,因为cloudera-scm-server里面的变量路径配置不正确!

[root@daojia01~]# vim /etc/init.d/cloudera-scm-serverCMF_DEFAULTS=${CMF_DEFAULTS:-/etc/default}改为=/opt/cm-5.7.2/etc/default此时service cloudera-scm-server start就不会报错了同时为了保证在每次服务器重启的时候都能启动cloudera-scm-server,应该在开机启动脚本/etc/rc.local中加入命令:service cloudera-scm-server restart
  • 启动cloudera-scm-agent所有节点
[root@daojia01 ~]# mkdir /opt/cm-5.7.2/run/cloudera-scm-agent[root@daojiaX ~]# cp /opt/cm-5.7.2/etc/init.d/cloudera-scm-agent /etc/init.d/cloudera-scm-agent[root@daojia~]# chkconfig cloudera-scm-agent on同样此时service cloudera-scm-agent start的话会报错:File not found: /usr/sbin/cmf-agent,因为cloudera-scm-agent里面的变量路径配置不正确!参照cms的配置同时为了保证在每次服务器重启的时候都能启动cloudera-scm-agent,应该在开机启动脚本/etc/rc.local中加入命令:service cloudera-scm-agent restart

启动后,等待几分钟后,就可以在web界面进行集群搭建了.

  • 在浏览器安装CDHs

等待主节点安装并且启动就在浏览器中进行操作了
进入192.168.10.1:7180 默认使用admin admin登录
以下在浏览器中使用操作安装

选择免费版:

组件提示
这里写图片描述

配置主机!由于我们在各个节点都安装启动了agent,并且在中各个节点都在配置文件中指向daojia01是server节点,所以各个节点的agent就会给agent发消息报告,所以这里我们可以在“当前管理的主机”中看到三个主机,全部勾选并继续,注意如果cloudera-scm-agent没有设为开机启动,如果以上有重启这里可能会检测不到其他服务器。

这里写图片描述

选择CDH(CDH版本要跟你安装的版本对应)
这里写图片描述

分发parcels到各个节点

这里写图片描述

正确性的检测(这俩个错误忽略,没什么影响)

这里写图片描述

选择要安装的服务(企业一般选择自定义服务)
这里写图片描述

角色分配(自己操作)

这里写图片描述

数据库设置选择

这里写图片描述

集群审核,这里都默认的

这里写图片描述

直接下一步,下一步,到安装完成。

阅读全文
0 0
原创粉丝点击