导读

这篇文章是关于使用CDH搭建Hadoop集群的第三步:安装Cloudera Manager Server和数据库的。

这篇文章有点长,涉及的知识点较多,略显零碎。虽然笔者可以将一些内容剔除,但笔者没有这么做,是因为想尽可能的把笔者的实践过程完整的记录下来,让后面的同学切实感受到安装的过程并可以避开笔者踩过的坑。

本文主要参考Cloudera官方文档。

在进行这一步之前,应该进行充分的前期准备。关于前期准备工作的相关内容请参考文章:

1)使用Cloudera的CDH部署Hadoop:准备工作

2)使用Cloudera的CDH部署Hadoop:第一步,配置package仓库

3)使用Cloudera的CDH部署Hadoop:第二步,安装JDK

1安装Cloudera Manager Server

安装Cloudera Manager Server packages的主机不必是集群的一个主机,这个主机要能访问本地或远程的数据库。

如果你配置了局域网yum源那么命令:

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

如果没有,那么命令:

sudo yum --nogpgcheck localinstall cloudera-manager-daemons-*.rpm

sudo yum --nogpgcheck localinstall cloudera-manager-server-*.rpm

注意:先不装cloudera-manager-agent,因为后面使用管理系统自动安装。

2安装数据库

Cloudera Manager使用数据库来存储Cloudera Manager configuration,系统健康状况,任务执行进度等信息。

建议Cloudera Manager Server和数据库分开部署,这样可以隔离错误。

2.1需要数据库的组件

Cloudera Manager Server, Oozie Server, Sqoop Server, Activity Monitor, Reports Manager, Hive Metastore Server, Hue Server, Sentry Server, Cloudera Navigator Audit Server, Cloudera Navigator Metadata Server。

2.2安装与配置数据库(MySql)

访问https://www.cloudera.com/documentation/enterprise/release-notes/topics/rn_consolidated_pcm.html#cdh_cm_supported_db查看支持的数据库版本。

注意:

1)如果安装5.6或 5.7,必须安装MySQL-shared-compat或MySQL-shared package

2)注释:虽然CDH官网这么说,但是mysql官网的5.7安装包中已经没有MySQL-shared-compat或MySQL-shared package,不过5.6的有。

3)datadir目录默认是/var/lib/mysql划分了足够的空间

使用命令:du -hs /var/lib/mysql

4)Mysql的GTID复制机制开启了,Cloudera Manager安装会失败。

下载MySql然后手动安装。

下面这些命令在联网情况下可以,若不连接外网则没法使用这个命令来装。

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

例:

wget http://192.168.107.83/mysql/mysql-community-release-el7-5.noarch.rpm

sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm

sudo yum update

sudo yum install mysql-server

sudo systemctl start mysqld

将MySQL加入局域网yum源

还是使用事先构建好的局域网的yum源。

去网站:https://dev.mysql.com/downloads/mysql/5.7.html#downloads将mysql下载下来。然后放到yum服务器上。

注意要自己生成repodata目录文件,使用createrepo命令。

例如,将rpm包放置于/var/www/html/mysql/5.7.23下,那么执行命令:

createrepo /var/www/html/mysql/5.7.23

命令执行成功:

在/var/www/html/mysql/5.7.23下生成一个repodata文件夹

打开这个repodata,看到文件:

配置客户端,使用此yum源

打开/etc/yum.repos.d/,创建一个repo文件

[mysql]

name=mysql

baseurl=http://192.168.107.83/mysql/5.6.5.6.41-1.el7.x86_64/enabled=1

gpgcheck=0

priority=1

将baseurl设置为http://192.168.107.83/mysql,那么repodata文件夹就要在mysql目录下,所以将上述生成的repodata移动到mysql下。

准备工作都已完成,开始安装mysql。

初次在Centos上安装mysql报错:

这是软件包依赖 mariadb组件的缘故,卸载这个。

yum -y remove mariadb-libs

然后安装mysql:

yum install mysql-community-server (安装5.6的命令式yum install mysql-server)

选y,继续。

但是有如下报错:

看来是找不到文件,因为机器自动找的是http://192.168.107.83/mysql/mysql-community-common-5.7.23-1.el7.x86_64.rpm

这个文件当然不存在,因为其在:/var/www/html/mysql/5.7.23,这个路径下。

于是将baseurl改为:

http://192.168.107.83/mysql/5.7.23

这样就完全没有问题了。

查看安装了哪些服务:

rpm -qa | grep mysql*

启动MySql

systemctl start mysqld.service

可能要等几毫秒的时间。

看mysql是否正常运行

ps -ef | grep mysqld

附:卸载mariadb

systemctl stop mariadb

rpm -qa | grep mariadb

rpm -e --nodeps mariadb-5.5.52-1.el7.x86_64

rpm -e --nodeps mariadb-server-5.5.52-1.el7.x86_64

rpm -e --nodeps mariadb-libs-5.5.52-1.el7.x86_64

另外,安装完5.6以后,没找到/etc/my.cnf,原因是:

第一种说法,my.cnf只是MySQL启动时的一个参数文件,可以没有它,这时MySQL会用内置的默认参数启动,

第二种说法,MySQL在启动时自动使用/usr/share/mysql(或/usr/)目录下的my-medium.cnf文件,这种说法仅限于rpm包安装的MySQL,

解决方法:

只需要复制一个/usr/share/mysql目录下的.cnf文件到/etc目录,并改名为my.cnf即可。

3配置和启动MySql服务

1)如果Mysql启动,那么停止他:sudo systemctl stop mysqld

2)把/var/lib/mysql/ib_logfile0 和/var/lib/mysql/ib_logfile1移到备份位置。使用命令(mv /var/lib/mysql/ib_logfile0 /root/)

3)确定my.cnf的位置,默认的为/etc/my.cnf

4)更新my.cnf

· 为了避免死锁,隔离级别设置为READ-COMMITTED

· 配置为使用InnoDB。配置MyISAM,那么Cloudera Manager启不来。

· 使用命令mysql> show table status;检查使用的是哪种引擎。

· 设置innodb_flush_method property为O_DIRECT,因为系统需要高的写吞吐量。

· 根据集群规模设置max_connections

配置示例:

[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

5)如果AppArmor和Mysql跑在同台机器上,要配置AppArmor许可Mysql写二进制文件

6)允许开机启动MySql:sudo systemctl enable mysqld

7)启动Mysql:sudo systemctl start mysqld

Centos 7 装5.6上述命令无法使用,要用:systemctl start mysql

8)设置密码

这一步似乎不行,下面见下面9)给出正确做法

运行sudo /usr/bin/mysql_secure_installation设置MySQL root password,新安装的MySql服务,root password是空的。

sudo /usr/bin/mysql_secure_installation

过程类似:

[...]

Enter current password for root (enter for none):

OK, successfully used password, moving on...

[...]

Set root password? [Y/n] Y

New password:

Re-enter new password:

Remove anonymous users? [Y/n] Y

[...]

Disallow root login remotely? [Y/n] N

[...]

Remove test database and access to it [Y/n] Y

[...]

Reload privilege tables now? [Y/n] Y

All done!

9)设置密码

grep "password" /var/log/mysqld.log

随机密码是:lVBIfgklx1>&

使用上面生成的随机密码登录系统:

mysql -u root -p

lVBIfgklx1>&

更改密码:

SET PASSWORD = PASSWORD('cnki2018');

ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;

flush privileges;

执行这个语句会报错:

这是因为:

为了加强安全性,MySQL5.7为root用户随机生成了一个密码,在error log中,关于error log的位置,如果安装的是RPM包,则默认是/var/log/mysqld.log。

如果只是修改为一个简单的密码,会报错误。

这与validate_password_policy的值有关:

validate_password_policy取值:

默认是1,即MEDIUM,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。

为了能设置一个简单的密码,可将validate_password_policy设置为0:

set global validate_password_policy=0;

设置完后,要重新设置密码

但是设置密码为cnki太短,先设置密码为cnki2018!,然后看下密码长度要求:

select @@validate_password_length;

所以设置为将密码设置为cnki2018。

可以设置密码长度:set global validate_password_length=1;

但是注意,密码长度有最小限制:

validate_password_number_count+ validate_password_special_char_count+ (2 * validate_password_mixed_case_count)

其中,validate_password_number_count指定了密码中数据的长度,validate_password_special_char_count指定了密码中特殊字符的长度,validate_password_mixed_case_count指定了密码中大小字母的长度。

这些值默认都是1,所以密码最小值为4。

设置用户 root 可以在任意 IP 下被访问:

grant all privileges on *.* to root@"%" identified by "new password";

刷新权限使之生效:

flush privileges;

在选错MySQL版本或者无法安装需要重装的情况下,要卸载Mysql

卸载MySql:

rpm -qa |grep -i mysql

yum remove

注意先查出来然后再卸载

杀死MySQL进程,强制登录

执行grep "password" /var/log/mysqld.log无法获得临时密码

采用强制登录:

1、systemctl stop mysqld

2、systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"

3、systemctl start mysqld

4、mysql -u root

5、UPDATE mysql.user SET authentication_string = PASSWORD('cnki2018') WHERE User = 'root' AND Host = 'localhost';

6、FLUSH PRIVILEGES;

7、quit;

执行完上述步骤在执行其他语句可能出错

所以在执行下面语句:

SET PASSWORD = PASSWORD('cnki2018');

ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;

flush privileges;

4安装MySql JDBC驱动

在Cloudera Manager Server主机上及其他需要的主机上安装MySql JDBC。

注意MySQL 5.6需要5.1.26及以上版本的JDBC驱动。

Cloudera建议使用5.1版本的JDBC驱动。

注意不要使用yum install来安装MySQL驱动包,因为他会安装OpenJDK(如果将openJDK卸载了,那么就没问题)。

下载MySQL JDBC driver(.tar.gz格式文件):http://www.mysql.com/downloads/connector/j/5.1.html

解压:tar zxvf mysql-connector-java-5.1.46.tar.gz

拷贝刚解压的文件到:/usr/share/java/,如果没有就先创建这个目录。

sudo mkdir -p /usr/share/java/

cd mysql-connector-java-5.1.46

sudo cp mysql-connector-java-5.1.46-bin.jar /usr/share/java/mysql-connector-java.jar

5创建数据库

一定要配置为支持utf8编码。

一定要记录下所创建的数据库名称,用户名,密码。Cloudera Manager安装向导会用到这些信息。

1)以root账号登陆:mysql -u root -p

2)创建数据库:

CREATE DATABASE DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

例:CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

GRANT ALL ON .* TO ''@'%' IDENTIFIED BY '';

例:GRANT ALL ON scm.* TO scm@'%' IDENTIFIED BY 'cnki2018';

GRANT ALL ON amon.* TO amon@'%' IDENTIFIED BY 'cnki2018';

GRANT ALL ON rman.* TO scm@'%' IDENTIFIED BY 'cnki2018';

注:

删除数据库命令:drop database ;

例:drop database scm;

Cloudera Manager configuration settings提供了一些默认值,但不必一定使用这些。

3)确认:

SHOW DATABASES;

SHOW GRANTS FOR ''@'%';

例:SHOW GRANTS FOR scm@'%';

注:一些mysql相关命令

使用数据库:use ;

列出所有表:show tables;

cdh 安装_使用Cloudera的CDH部署Hadoop:第三步,安装管理平台和数据库相关推荐

  1. cdh 安装_使用Cloudera的CDH部署Hadoop:第二步,安装JDK

    导读 这篇文章是关于使用CDH搭建Hadoop集群的第一步:配置package仓库.本文主要参考Cloudera官方文档. 在进行这一步之前,应该进行充分的前期准备.关于前期准备工作的相关内容请参考文 ...

  2. kubeadm源码分析(内含kubernetes离线包,三步安装)

    k8s离线安装包 三步安装,简单到难以置信 kubeadm源码分析 说句实在话,kubeadm的代码写的真心一般,质量不是很高. 几个关键点来先说一下kubeadm干的几个核心的事: kubeadm ...

  3. kubeadm源码分析(kubernetes离线安装包,三步安装)

    k8s离线安装包 三步安装,简单到难以置信 kubeadm源码分析 说句实在话,kubeadm的代码写的真心一般,质量不是很高. 几个关键点来先说一下kubeadm干的几个核心的事: kubeadm ...

  4. mysql降低数据库版本_三步10分钟搞定数据库版本的降迁 (将后台数据库SQL2008R2降为SQ...

    三步10分钟搞定数据库版本的降迁 (将SQL2008R2降为SQL2005版本) 前思后想仍觉得实战数据库版本的降迁一文中的方式不仅老土而且低效,故有了下文三步搞定数据库从MSSQL2008R2 高版 ...

  5. 用友t3安装计算机名称不符合,「用友T3安装教程」简单三步安装T3,安装再也不求人!...

    原标题:「用友T3安装教程」简单三步安装T3,安装再也不求人! 一.计算机环境 1.计算机名:不能有符号 按上图方法修改计算机名 修改后会出现这样的字样,暂不重启 2.时间和日期格式 进入控制面板把短 ...

  6. Linux系统三步安装QQ

    Linux系统三步安装QQ 第一步:网页下载Linux版QQ 第二步:在安装包所在位置打开终端 第三步:安装 第一步:网页下载Linux版QQ 下载地址:https://im.qq.com/linux ...

  7. 调音台docker教程_威联通Docker教程 篇二:三分钟安装精美的音乐播放器 MusicPlayer!Container Station系列教程!...

    威联通Docker教程 篇二:三分钟安装精美的音乐播放器 MusicPlayer!Container Station系列教程! 2020-04-15 11:01:02 67点赞 529收藏 47评论 ...

  8. python爬虫scrapy安装_零基础写python爬虫之爬虫框架Scrapy安装配置

    前面十章爬虫笔记陆陆续续记录了一些简单的Python爬虫知识, 用来解决简单的贴吧下载,绩点运算自然不在话下. 不过要想批量下载大量的内容,比如知乎的所有的问答,那便显得游刃不有余了点. 于是乎,爬虫 ...

  9. linux nginx 安装_艾编程基础教程:Linux 环境下 Nginx 安装

    #安装说明:Nginx 安装前需要提前安装相关命令和工具包: make 命令.gcc g++.pcre.zlib.openssl 1.安装 gcc g++ #ubuntu 环境下安装 apt-get ...

最新文章

  1. undb php,显示html过滤报错,我不知道如何修改了。
  2. 阿里云1C2G虚拟机【99/年】羊毛党集合啦!
  3. maven工程中添加scala-library并非idea scala插件
  4. 以 DirectUI 方式实现的ImageButton
  5. 发了篇paper,双非二本的她直博浙大
  6. postman 怎么调试pos_SpringBoot|第十五章:基于Postman的RESTful接口测试
  7. 前向传播、反向传播——通俗易懂
  8. Python--CSV模块
  9. 斯坦福大学stanford
  10. GPIO模拟MDC/MDIO协议
  11. java环境变量配置_Java环境变量配置终极版
  12. (16)全民小视频引流脚本模块化开发10-发送图片私信By飞云脚本学院
  13. Docker 安装 nexus 私服
  14. 乔布斯与Google鲜为人知的故事
  15. hive函数regexp_extract提取固定长度的数字信息(正则表达)
  16. Python分析微信好友性别比例
  17. cadence SPB17.4 - 取消(删除)扇出
  18. QT 中多线程实现方法总结
  19. Como criar uma linguagem usando ANTLR4 e Java
  20. 快来智影:微电影的特征有哪些?

热门文章

  1. 通过live555实现H264 RTSP直播(Windows版)
  2. 了解select模型的六大注意点
  3. Sublime3 搭建C/C++环境
  4. JSP中include指令的乱码问题
  5. cimage和gdi绘图效率比较_GDI+和GDI绘图性能对比实验
  6. 用正则表达式作html2RSS服务
  7. 【Java框架】 Hibernate与Mybatis对比
  8. Ubuntu 14.04 hadoop单机安装
  9. ArcGIS JS API 4.10跨域问题(本地切片无法加载)解决办法
  10. RotateAnimation 实现表盘指针转动