https://blog.csdn.net/qq_22946601/article/details/82382931
1.虚拟机准备,网络配置,host配置,无秘配置,防护墙关闭,ntp服务
cdh-node1 192.168.128.221
cdh-node2 192.168.128.222
cdh-node3 192.168.128.223
- 安装配置httpd(主节点)
yum install httpd
或者你可以直接输入命令
yum install -y httpd
设置Apache开机启动
chkconfig httpd on
启动httpd服务
service httpd start
3.Linux swappiness参数(所有节点)
为了避免服务器使用swap功能而影响服务器性能,一般都会把vm.swappiness修改为0(cloudera建议10以下)
echo 0 > /proc/sys/vm/swappiness
这样操作重启机器还是还原
修改配置文件,开机自动设置参数
编辑vi /etc/sysctl.conf
在最后添加vm.swappiness=0
4.禁用透明页(所有节点)
设置方法
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
永久生效
在vi /etc/rc.local 添加上面命令
给与可执行权限:
chmod +x /etc/rc.d/rc.local
- 安装配置jdk
JDK安装(所有节点)
卸载原有java
rpm -qa | grep java # 查询已安装的java
yum remove java* # 卸载
安装JDK以及配置环境变量
rpm -ivh /opt/JDK/jdk-8u144-linux-x64.rpm
vi /etc/profile
# 末尾添加
export JAVA_HOME=/usr/java/jdk1.8.0_144
export CLASSPATH=.:$CLASSPTAH:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
- MYSQL安装(主节点)
1卸载mariadb
[root@cdh001 opt]# rpm -qa|grep mariadb
mariadb-libs-5.5.44-2.el7.x86_64
[root@cdh001 opt]# rpm -e mariadb-libs-5.5.44-2.el7.x86_64
error: Failed dependencies:
libmysqlclient.so.18()(64bit) is needed by (installed) postfix-2:2.10.1-6.el7.x86_64
libmysqlclient.so.18(libmysqlclient_18)(64bit) is needed by (installed) postfix-2:2.10.1-6.el7.x86_64
[root@cdh001 opt]# rpm -e postfix-2:2.10.1-6.el7.x86_64
[root@cdh001 opt]# rpm -e mariadb-libs-5.5.44-2.el7.x86_64
2 MYSQL安装
cd /opt/mysql/
tar -xvf ./mysql-5.7.19-1.el7.x86_64.rpm-bundle.tar
rpm -ivh mysql-community-common-5.7.19-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.19-1.el7.x86_64.rpm
报错
error: Failed dependencies:
libc.so.6(GLIBC_2.14)(64bit) is needed by MySQL-client-advanced-5.6.22-1.el7.x86_64
libc.so.6(GLIBC_2.17)(64bit) is needed by MySQL-client-advanced-5.6.22-1.el7.x86_6
解决方法
下载响应安装包:http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz。
解压: tar xvf glibc-2.14.tar.gz
进入glibc-2.14目录:cd glibc-2.14
创建build文件夹:mkdir build
进入build目录:cd build
执行:../configure --prefix=/opt/glibc-2.14
执行:make
执行:make instal
rpm -ivh mysql-community-client-5.7.19-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.19-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.19-1.el7.x86_64.rpm
3 MYSQL配置
mysqld --initialize --user=mysql # 初始化mysql使mysql目录的拥有者为mysql用户
cat /var/log/mysqld.log # 最后一行将会有随机生成的密码
systemctl start mysqld.service # 设置mysql服务自启
mysql -uroot –p
# 输入临时密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root'; # 修改密码
4 创建库(后续安装服务等使用)
CREATE DATABASE cmserver DEFAULT CHARACTER SET utf8;
GRANT ALL on cmserver.* TO 'cmserver'@'%' IDENTIFIED BY 'cmserver';
CREATE DATABASE hive DEFAULT CHARACTER SET utf8;
GRANT ALL on hive.* TO 'hive'@'%' IDENTIFIED BY 'hive';
CREATE DATABASE amon DEFAULT CHARACTER SET utf8;
GRANT ALL on amon.* TO 'amon'@'%' IDENTIFIED BY 'amon';
CREATE DATABASE rman DEFAULT CHARACTER SET utf8;
GRANT ALL on rman.* TO 'rman'@'%' IDENTIFIED BY 'rman';
CREATE DATABASE oozie DEFAULT CHARACTER SET utf8;
GRANT ALL on oozie.* TO 'oozie'@'%' IDENTIFIED BY 'oozie';
CREATE DATABASE hue DEFAULT CHARACTER SET utf8;
GRANT ALL on hue.* TO 'hue'@'%' IDENTIFIED BY 'hue';
- 安装mysql
inux下安装mysql5.7步骤
1.解压下载好的.tar.gz文件,并将解压后的文件拷贝到/usr/local/目录下,注意:-C,而不是小写的-c
tar -xzvf mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
2.进入/usr/local/目录下,修改已经解压的文件夹的名字,改为mysql
mv mysql-5.7.19-linux-glibc2.12-x86_64 mysql
3.检查数据库文件是否有,若有便删除(linux系统自带的)
检查:命令rpm -qa | grep mysql
如果有则删除:命令rpm -e --nodeps mysql-libs-5.1.52.x86_64
4.检查mysql组和用户是否存在,如无则创建
检查:cat /etc/group | grep mysql;
cat /etc/passwd |grep mysql;
创建:groupadd mysql;
useradd -r -g mysql mysql
5.在mysql目录下新建data目录
mkdir data
6.更改mysql目录下所有的目录及文件夹所属组和用户
[root@dbserver mysql]# cd /usr/local/
[root@dbserver local]# chown -R mysql mysql/
[root@dbserver local]# chgrp -R mysql mysql/
[root@dbserver local]# cd mysql/
[root@dbserver mysql]# ls -l
total 40
drwxr-xr-x. 2 mysql mysql 4096 Aug 31 16:45 bin
-rw-r--r--. 1 mysql mysql 17987 Jun 22 22:13 COPYING
drwxr-xr-x. 2 mysql mysql 6 Aug 31 16:48 data
drwxr-xr-x. 2 mysql mysql 52 Aug 31 16:45 docs
drwxr-xr-x. 3 mysql mysql 4096 Aug 31 16:44 include
drwxr-xr-x. 5 mysql mysql 4096 Aug 31 16:45 lib
drwxr-xr-x. 4 mysql mysql 28 Aug 31 16:45 man
-rw-r--r--. 1 mysql mysql 2478 Jun 22 22:13 README
drwxr-xr-x. 28 mysql mysql 4096 Aug 31 16:45 share
drwxr-xr-x. 2 mysql mysql 86 Aug 31 16:45 support-files
7.安装和初始化数据库
进入/usr/local/mysql/bin目录下,执行命令
./mysqld --initialize --user=mysql --basedir=/usr/local/mysq/--datadir=/usr/local/mysql/data/
如果提示错误:
[ERROR] Can't find error-message file '/usr/local/mysql/--datadir=/usr/local/mysql/data/share/errmsg.sys'. Check error-message file location and 'lc-messages-dir' configuration directive.2017-08-31T08:50:24.709286Z 0 [Warning] InnoDB: New log files created, LSN=45790
解决:
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --lc_messages_dir=/usr/local/mysql/share --lc_messages=en_US
如果提示错误内容包含./mysqld: error while loading shared libraries: libnuma.so.1这样的描述错误,这是因为缺少numactl依赖共享库文件:
解决方案:
你的当前系统是Centos就执行命令:yum -y install numactl
你的当前系统是ubuntu就执行命令:sudo apt-get install numactl
如果提示:./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
缺少libaio
执行yum install -y libaio
注意:安装成功后,最后一行有提示
例如我的A temporary password is generated for root@localhost: bke6OmP#<y(w
请务必记住冒号后面的字符串,这个是数据库root用户初始登录密码,请务必保存下来
8.配置my.cnf
进入/usr/local/mysql/support-files/目录下
查看是否存在my-default.cnf文件,如果存在直接copy到/etc/my.cnf文件中:cp -a ./support-files/my-default.cnf /etc/my.cnf
如果不存在my-default.cnf文件,则在/etc/目录下创建my.cnf,并写入以下内容
[mysqld]
basedir=/usr/local/mysql-5.7.12/
datadir=/usr/local/mysql-5.7.12/data/
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,
NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,
NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
9.启动服务
进入已安装的mysql目录中的bin目录下执行命令: ./mysqld_safe --user=mysql &
注意:如果此步骤报错,可以忽略,不用管,继续往下执行下一步。
配置环境变量
vi /etc/profile
export MYSQL_HOME="/software/mysql-5.6.21"
export PATH="$PATH:$MYSQL_HOME/bin"
保存退出
. /etc/profile
6.添加自启动服务
chkconfig --add mysql
chkconfig mysql on
7.启动mysql
service mysql start
10.将mysqld服务加入开机自启动项
将安装的mysql安装目录中的support-files/mysql.server 拷贝为/etc/init.d/mysql并设置运行权限,这样就可以使用service mysql命令启动/停止服务,
否则就只能使用{mysql}/bin/mysqld_safe &命令来启动服务
还需要把mysql.server中basedir的相关路径,改为自定义的路径,默认路径是/usr/local/mysql
执行命令:
拷贝:cp mysql.server /etc/init.d/mysql
给权限:chmod +x /etc/init.d/mysql
把mysql注册为开机启动的服务,命令:chkconfig --add mysql
查看是否添加成功:chkconfig --list mysql
如果提示:mysql 0:off 1:off 2:on 3:on 4:on 5:on 6:off,则表示已设置开机启动服务项
11.启动服务
service mysql start
12.登录mysql
进入mysql安装的bin目录
cd /usr/local/mysql/bin
登录mysql命令:./mysql -u root -p
回车后输入密码:你第7步记录下来的密码
12.修改root初始密码
alter user 'root'@'localhost' identified by 'dawning';
回车后提示下面的内容,表示修改成功
Query OK, 0 rows affected, 1 warning (0.00 sec)
修改密码也可以使用sql执行:
update mysql.user set authentication_string=password("你的新密码") where User="用户名" and Host="%";
13.设置远程登录权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'dawning' WITH GRANT OPTION;
刷新
flush privileges;
mysql> quit
Bye
7.创建库(后续安装服务等使用)
CREATE DATABASE cmserver DEFAULT CHARACTER SET utf8;
GRANT ALL on cmserver.* TO 'cmserveruser'@'%' IDENTIFIED BY 'password';
CREATE DATABASE metastore DEFAULT CHARACTER SET utf8;
GRANT ALL on metastore.* TO 'hiveuser'@'%' IDENTIFIED BY 'password';
CREATE DATABASE amon DEFAULT CHARACTER SET utf8;
GRANT ALL on amon.* TO 'amonuser'@'%' IDENTIFIED BY 'password';
CREATE DATABASE rman DEFAULT CHARACTER SET utf8;
GRANT ALL on rman.* TO 'rmanuser'@'%' IDENTIFIED BY 'password';
CREATE DATABASE oozie DEFAULT CHARACTER SET utf8;
GRANT ALL on oozie.* TO 'oozieuser'@'%' IDENTIFIED BY 'password';
CREATE DATABASE hue DEFAULT CHARACTER SET utf8;
GRANT ALL on hue.* TO 'hueuser'@'%' IDENTIFIED BY 'password';
service cloudera-scm-server start
配置Cloudera Manager包yum源(主节点)
mkdir -p /var/www/html/cloudera-repos
将下载的cm包文件移到此目录下
创建repodata
[root@cdh001 cm6]# createrepo .
创建.repo
[root@cdh001 cm6]# vim /etc/yum.repos.d/cloudera-manager.repo
[cloudera-manager]
name = Cloudera Manager, Version
baseurl = http://cdh001/cloudera-repos/cm6/
gpgcheck = 1
~
yum clean all
yum makecache
安装 Cloudera Manager(主节点)
sudo yum install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server --nogpgcheck
#安装完CM后/opt/ 下会出现cloudera目录
mv /opt/parcels/* /opt/cloudera/parcel-repo # 将parcel包移动到指定位置
在/opt/cloudera/parcel-repo执行以下命令:
sha1sum CDH-6.0.0-1.cdh6.0.0.p0.537114-el6.parcel | awk '{ print $1 }' > CDH-6.0.0-1.cdh6.0.0.p0.537114-el6.parcel.sha
# 执行初始化脚本
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql cmserver cmserveruser password
# 打开server服务
service cloudera-scm-server start
top命令查看cpu占用大幅升高,cpu使用率下降后说明服务已起
查看CM页面是否已可以打开
http://192.168.128.221:7180
集群安装配置
按Option1说明配置auto-tls
JAVA_HOME=/usr/java/jdk1.8.0_144 /opt/cloudera/cm-agent/bin/certmanager --location /opt/cloudera/CMCA setup --configure-services
service cloudera-scm-server restart
重启后打开7180自动跳转至7183
这里选择的cdh不然是在线安装
所有节点JDK已安装,这里不勾选
Agents安装
parcels分发
检测
集群安装配置(可后续依需求单个服务安装,此处选择Essentials安装)
选择服务安装节点(namenode与secondaryNameNode尽量不要放在一个节点,我这里当时比较随意没注意,后续可以迁移)
填入之前创建的库名用户密码,测试连接success后continue
各项配置
初次运行
完成
安装过程中可能遇到的问题:
需要使用sha1sum校验parcel包生成校验文件,不然parcel包不识别
allkeys.asc 文件忘记下载,安装Agents会报错
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
官方安装手册
http://www.cloudera.com/documentation/enterprise/6/latest/topics/installation.html
Hdfs参数调优
- 提高DataNode的堆栈大小。DataNode应该至少有4 GB的堆栈大小,以允许迭代的增加和最大的流
修改后
2、设置DataNode平衡带宽
a、展开DataNode默认组(DataNode Default Group) > 性能(Performance)类别;
b、根据你的磁盘和网络性能配置DataNode平衡带宽(DataNode Balancing Bandwidth);
c、点击保存更改(Save Changes)提交更改。
3、提高依据迭代设置复制工作乘数器的数值(默认值是2,然而推荐值是10)
a、展开NameNode默认组(NameNode Default Group) >高级(Advanced)类别;
b、将配置依据迭代设置复制工作乘数器(Replication Work Multiplier Per Iteration)设置为10;
c、点击保存更改(Save Changes)提交更改。
4、增加复制的最大线程数和最大复制线程的限制数
a、展开NameNode默认组(NameNode Default Group) >高级(Advanced)类别;
b、配置Datanode复制线程的最大数量(Maximumnumber of replication threads on a Datanode)和Datanod复制线程的数量的限制数(Hardlimit on the number of replication threads on a Datanod)分别为50和100;
c、点击保存更改(Save Changes)提交更改。
Yarn参数调整
- mapreduce.map.memory.mb,map任务内存,cdh默认1G
- mapreduce.map.cpu.vcores,map任务虚拟CPU核数,cdh默认1
- mapreduce.reduce.memory.mb,reduce任务内存,cdh默认1G
- mapreduce.reduce.cpu.vcores,reduce任务虚拟CPU核数,cdh默认1
- yarn.nodemanager.resource.memory-mb,容器内存,cdh默认8G
- yarn.nodemanager.resource.cpu-vcores,容器虚拟CPU核数,cdh默认8
cdh内存分配参考文档
2018年01月29日 16:54:05 adshiye 阅读数:1767
基于以下环境提供参考值: 5台内存32G、cpu8核的服务器,操作系统为centos6.8
总内存: 160G
总核数: 40核
不同的环境可以根据自己环境的总内存以及总内核和这个参考值得出系数,那么:值= 推荐值 X 系数
参数 |
解释 |
值 |
NameNode 的 Java 堆栈大小 |
Java 进程堆栈内存的最大大小,改Java进程主要是:维护整个系统的的文件目录树,维护文件/目录的信息和每个文件对应的数据块列表,接受并处理用户的操作请求 |
至少1GB |
dfs.datanode.max.locked.memory |
一个DataNode将要用来被做HDFS缓存的内存的最大值 |
至少256MB |
DataNode 的 Java 堆栈大小 |
Java 进程堆栈内存的最大大小,改Java进程主要是:周期性检测并向NameNode上报其管理的块信息,同时处理namenode给该Datanode的命令 |
512MB |
Failover Controller 的 Java 堆栈大小 |
Java 进程堆栈内存的最大大小,改Java进程主要是:监控NameNode的健康状态,监控NameNode在zookeeper中的健康状态,监控之后管理NameNode的状态 |
至少256MB |
JournalNode 的 Java 堆栈大小 |
Java 进程堆栈内存的最大大小,改Java进程主要是:实现两个NameNode的数据同步,active的NameNode做变更的时候,会通知JournalNode 进程,standby的NameNode心跳获取 |
至少256MB |
- hdfs
- hive
参数 |
解释 |
值 |
Hive Metastore Server 的 Java 堆栈大小(字节) |
Java 进程堆栈内存的最大大小,改Java进程主要是:为hive、impala、kudu提供元数据管理 |
1.5GB |
HiveServer2 的 Java 堆栈大小 |
由于我们的系统没有使用到hiveserver2,所以设置小的值,同时可以将它停止 |
1GB |
- impala
参数 |
解释 |
值 |
Catalog Server 的 Java 堆栈大小 |
Java 进程堆栈内存的最大大小,改Java进程主要是:作为meta访问网关,从Hive Metastore等外部catalog中获取元数据信息,放到impala自己的catalog结构中,impalad执行ddl命令时通过catalogd由其代为执行,该更新则由statestored广播 |
最少256MB |
Impala Daemon 内存限制 |
Java 进程堆栈内存的最大大小,改Java进程主要是:作为客户端,接受客户的查询请求,生成查询计划树,把查询计划分发给其他的Impala Daemon(包括自己),被分配的Impala Daemon读写数据进行查询,并返回改客户端 |
1GB |
- kafka
参数 |
解释 |
值 |
Java Heap Size of Broker |
kafka broker java 进程堆栈内存的最大大小 |
至少1GB |
- kudu
参数 |
解释 |
值 |
Kudu Tablet Server Hard Memory Limit |
kudu tablet server最大能使用的内存,kudu写入数据的时候,是将数据先缓存到内存,然后保存到磁盘,如何设置过低,会影响写入的性能 |
3GB |
Kudu Tablet Server Block Cache Capacity |
kudu tablet 块缓存的最大内存量 |
2GB |
maintenance_manager_num_threads |
kudu对数据管理的时候最大显成熟 |
4 |
- spark
参数 |
解释 |
值 |
Java Heap Size of History Server in Bytes |
spark history server java 进程堆栈内存的最大大小 |
至少512MB |
- yarn
参数 |
解释 |
值 |
JobHistory Server 的 Java 堆栈大小 |
java 进程堆栈内存的最大大小 |
512MB |
NodeManager 的 Java 堆栈 |
java 进程堆栈内存的最大大小 |
512MB |
容器内存 |
每个nodemanager为最大可分配的内存 |
9GB |
ResourceManager 的 Java 堆栈大小 |
java 进程堆栈内存的最大大小 |
512MB |
最小容器内存 |
单个任务可申请的最少内存量 |
1GB |
容器内存增量 |
单个任务可申请的内存的增量 |
512MB |
最大容器内存 |
单个任务可申请的最大内存量 |
6GB |
容器虚拟 CPU 内核 |
每个nodemanager为最大可分配的内核数量 |
6 |
最小容器虚拟 CPU 内核数量 |
单个任务可申请的最小内核数量 |
1 |
容器虚拟 CPU 内核增量 |
单个任务申请的内核增量 |
1 |
最大容器虚拟 CPU 内核数量 |
单个任务可申请的最大内核数量 |
1 |
- zookeeper
参数 |
解释 |
值 |
ZooKeeper Server 的 Java 堆栈大小 |
java 进程堆栈内存的最大大小 |
至少512MB |
- Cloudera Management Service
参数 |
解释 |
值 |
Activity Monitor 的 Java 堆栈大小 |
|
至少1GB |
Alert Publisher 的 Java 堆栈 |
|
至少256MB |
EventServer 的 Java 堆栈大小 |
|
至少1GB |
Host Monitor 的 Java 堆栈大小 |
|
至少1GB |
Host Monitor 的最大非 Java 内存 |
|
至少1.5GB |
Service Monitor 的 Java 堆栈大小 |
|
至少1GB |
Service Monitor 的最大非 Java 内存 |
|
至少1.5GB |
改后
改后
改后