龙空技术网

CDH5.10在某中型公司的应用

尚硅谷教育 470

前言:

如今大家对“centos7自带的zlib”大概比较讲究,你们都想要分析一些“centos7自带的zlib”的相关资讯。那么小编同时在网络上汇集了一些对于“centos7自带的zlib””的相关内容,希望看官们能喜欢,大家一起来学习一下吧!

环境准备

环境配置说明:

+===========================================================================+

| Mem48G| Mem48G|

| 磁盘8T | 磁盘8T |

| ip192.168.*.* | ip192.168.*.* |

| jdk jdk1.8.0_131| jdk jdk1.8.0_131|

| Python Python 2.7.5 | Python Python 2.7.5 |

| hostnameSpark1 | hostnameSpark2 |

+===========================================================================+

| Mem48G| Mem48G|

| 磁盘8T | 磁盘8T |

| ip192.168.*.* | ip192.168.*.* |

| jdk jdk1.8.0_131| jdk jdk1.8.0_131|

| Python Python 2.7.5 | Python Python 2.7.5 |

| hostnameSpark3 | hostnameSpark4 |

+===========================================================================+

(1)准备安装包:

(2) 版本说明:

cloudera-manager-centos7-cm5.10.2_x86_64.tar.gz

CDH-5.10.2-1.cdh5.10.2.p0.5-el7.parcel

CDH-5.10.2-1.cdh5.10.2.p0.5-el7.parcel.sha1

manifest.json

MySQL-5.6.26-1.linux_glibc2.5.x86_64.rpm-bundle.tar

mysql-connector-java-5.1.45.tar.gz

配置虚拟机

检查ip,如果没有ifconfig命令,需要如下去安装

-bash: ifconfig: 未找到命令先看路径是否有,echo $PATH(没有 /sbin/ifcongfig)ls /sbin | grep ifconfig (没有)没有安装,安装yum search ifconfignet-tools.x86_64 : Basic networking tools安装该包 yum install net-tools.x86_64在运行ifconfig就搞定了

1.修改IP

vim /etc/sysconfig/network-scripts/ifcfg-ens33

2.修改域名

vim /etc/hostname

3.域名解析

vim /etc/hosts

192.168.1.211 cm1

192.168.1.212 cm2

192.168.1.213 cm3

4.重启

reboot

5.禁用ipv6(cm不支持ipv6,可以不用设置,有就设置)

vi /etc/default/grub

ipv6.disable=1 crashkernel=auto

如下:

GRUB_CMDLINE_LINUX="ipv6.disable=1 crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet"GRUB_DISABLE_RECOVERY="true"

6.防火墙处理

# systemctl stop firewalld

# systemctl disable firewalld

# systemctl status firewalld

SELINUX(Linux的安全加强系统

# sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config

# reboot now

重启检查

# getenforce (查看selinux的状态

# sestatus -v

安装JDK

Step1、卸载OpenJDK

# rpm -qa | grep 'java'

# rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64 java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64 java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64 java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64

然后重启机器,使用java -verion验证

Step3、安装下载的JDK的tar.gz

# mkdir module

# chown -R jimm.jimm module/

# tar -zxvf jdk-8u144-linux-x64.tar.gz

# mv jdk1.8.0_144/ /opt/module

vi /etc/profile

###JAVA_HOME

export JAVA_HOME=/opt/module/jdk1.8.0_144

export PATH=$PATH:$JAVA_HOME/bin

Source /etc/profile

克隆配置免密

在Server主节点配置:

$ ssh-keygen -t rsa

$ ssh-copy-id cm1

$ ssh-copy-id cm2

$ ssh-copy-id cm3

NTP时间同步

Step1、首先在主节点上同步一下 时间

# ntpdate cn.pool.ntp.org

Step2、编辑配置文件

# vi /etc/ntp.conf

主节点

然后,主节点:

# systemctl start ntpd.service

# systemctl enable ntpd.service

其他节点:

# systemctl stop ntpd.service

# systemctl disable ntpd.service

在其他节点配置定时任务,用于定时同步时间:

# crontab -e

# .------------------------------------------minute(0~59)

# | .----------------------------------------hours(0~23)

# | | .--------------------------------------day of month(1~31)

# | | | .------------------------------------month(1~12)

# | | | | .----------------------------------day of week(0~6)

# | | | | | .--------------------------------command

# | | | | | |

# | | | | | |

*/10 * * * * /usr/sbin/ntpdate cm1

重启定时任务:

# systemctl restart crond.service

注意以下操作3台机器都要

设置BIOS时钟:系统关机时把内存中的系统时间写入并修改主板时间,重新启动系统时,系统时间会与硬件时间同步,从而保证时间的一致性。

Step1、修改ntpd文件

# vi /etc/sysconfig/ntpd

注意注释下边那一行添加的内容SYNC_HWCLOCK=yes

Step2、修改ntpdate文件

# vi /etc/sysconfig/ntpdate

最后一行改为了yes

设置内存与进程数

# ulimit -a,查看当前系统的上述配置的上限,unlimited为无上限,

* soft nofile 32728

* hard nofile 1024999

* soft nproc 65535

* hard nproc unlimited

* soft memlock unlimited

* hard memlock unlimited

修改参数:

# vi /etc/security/limits.conf

配置完成后重启机器,*代表所有用户,@表示对某个用户组生效,直接写用户名表示对某个用户生效

提示:3台机器都需要配置重启一下

提示:如果这个文件配置出现错误,重启后,该机器节点将不能再使用。需要进入单用户模式修复,具体请查阅资料。

安装MySql

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

[root@cm1 ~]# rpm -qa | grep mariadb

mariadb-libs-5.5.52-1.el7.x86_64

[root@cm1 ~]# rpm -e –nodeps mariadb-libs-5.5.52-1.el7.x86_64

将下载好的mysql tar包拷贝到服务器上然后解压(alt + p)

[root@cm1 ~]# mv ~/MySQL-5.6.26-1.linux_glibc2.5.x86_64.rpm-bundle.tar /opt/software/

[root@cm1 ~]#

[root@cm1 ~]# mkdir mysql && chown –R jimm.jimm/opt/mysql

[root@cm1 ~]# tar -xvf /opt/software/MySQL-5.6.26-1.linux_glibc2.5.x86_64.rpm-bundle.tar -C /opt/mysql/

然后安装释出的全部rpm:rpm -ivh MySQL-*.rpm 如果有问题换成

rpm -ivh MySQL-*.rpm --force –nodeps1

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

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

Data::Dumper "

经过查询需要安装perl-Module

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

等待安装完了然后就可以执行上面的初始化语句了

修改配置文件路径:1在配置文件中增加以下配置并保存

[root@cm1]#vim /etc/my.cnf

[mysqld]

###############################################################

########## this is niaoshu add mysql-basic properties #########

########## about engine is innodb #########

########## character is utf8 ##########

###############################################################

default-storage-engine = innodb

innodb_file_per_table

collation-server = utf8_general_ci

init-connect = 'SET NAMES utf8'

character-set-server = utf8

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

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

缺少文件

报错:Installing MySQL system tables..../bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

解决

yum -y install libaio-devel

- 启动mysql

[root@cm1]# service mysql restart

ERROR! MySQL server PID file could not be found!

Starting MySQL... SUCCESS!

- 查看mysql root初始化密码

[root@cm1]# cat /root/.mysql_secret

# The random password set for the root user at Fri Sep 16 11:13:25 2016 (local time): ZgqIT05TsMFXRm9

- 登录进行去更改密码

[root@cm1]# mysql -u root -p

mysql> 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: 0

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

准备数据库

1)分发脚本

[root@cm1 ~]# cd /urs/local/bin

[root@cm1 bin]# vi ync.sh

#!/bin/bash

# 1 get the number of input parameters, if there is no parameter, quit directly

pcount=$#

if((pcount==0)); then

echo no args;

exit;

fi

# 2 get the file name

p1=$1

fname=`basename $p1`

echo fname=$fname

# 3 get the upper directory to the absolute path

pdir=`cd -P $(dirname $p1); pwd`

echo pdir=$pdir

# 4 get the current user name

user=`whoami`

# 5 cycle

for((host=1; host<4; host++)); do

#echo $pdir/$fname $user@hadoop$host:$pdir

echo --------------- cm$host ----------------

rsync -rvl $pdir/$fname $user@cm$host:$pdir

done

修改权限,让其普通用户也可使用

2)命令调用脚本

[root@cm1 bin]# vi call.sh

#!/bin/bash

pcount=$#

if((pcount==0));then

echo no args;

exit;

fi

echo -------------localhost----------

$@

for((host=1; host<=3; host++)); do

echo ----------cm$host---------

ssh cm$host $@

done

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

[root@cm1 ~]# tar -zxvf /opt/software/mysql-connector-java-5.1.45.tar.gz -C /opt/mysql/

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

4) 创建数据库

[root@cm1 java]# mysql -uroot -p123456

mysql> create database hivedb DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

mysql> create database huedb DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

mysql> create database ooziedb DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

安装CDH

# yum -y install chkconfig python bind-utils psmisc libxslt zlib sqlite cyrus-sasl-plain cyrus-sasl-gssapi fuse portmap fuse-libs redhat-lsb

安装CM

(1) 解压cm包到指定目录所有服务器都要(或者在主节点解压好,然后通过分发工具到其节点同一目录下)

[root@cm1 opt]# mkdir /opt/cloudera-manager

[root@cm1 opt]# tar -zxvf /opt/software/cloudera-manager-centos7-cm5.10.2_x86_64.tar.gz -C /opt/cloudera-manager/

[root@cm1 opt]# ync.sh cloudera-manager/

(2) 创建cloudera-scm用户(所有节点)

[root@cm1 opt]# useradd --system --home=/opt/cloudera-manager/cm-5.10.2/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm

(3) 在主节点创建cloudera-manager-server的本地元数据保存目录

[root@cm1 var]# mkdir /var/cloudera-scm-server

[root@cm1 var]# chown cloudera-scm.cloudera-scm -R /var/cloudera-scm-server/

[root@cm1 var]# chown cloudera-scm.cloudera-scm -R /opt/cloudera-manager/

配置从节点cloudera-manger-agent指向主节点服务器(所有agent)

[root@cm1 opt]# vi /opt/cloudera-manager/cm-5.10.2/etc/cloudera-scm-agent/config.ini

将server_host改为CMS所在的主机名即cm1

(4) 主节点中创建parcel-repo仓库目录

[root@cm1 opt]# mkdir -p /opt/cloudera/parcel-repo

[root@cm1 opt]# chown cloudera-scm.cloudera-scm -R /opt/cloudera

[root@cm1 opt]# cd /opt/software/

[root@cm1 software]# cp CDH-5.10.2-1.cdh5.10.2.p0.5-el7.parcel* manifest.json /opt/cloudera/parcel-repo/

注意:其中CDH-5.10.2-1.cdh5.10.2.p0.18-el7.parcel.sha1 后缀要把1去掉

(5) 所有从节点创建parcels目录

[root@cm1 cloudera]# mkdir -p /opt/cloudera/parcels

[root@cm1 cloudera]# chown cloudera-scm:cloudera-scm -R /opt/cloudera

解释:Clouder-Manager将CDHs从主节点的/opt/cloudera/parcel-repo目录中抽取出来,分发解压激活到各个节点的/opt/cloudera/parcels目录中

(6) 初始脚本配置数据库scm_prepare_database.sh(在主节点上)

[root@cm1 cloudera]# /opt/cloudera-manager/cm-5.10.2/share/cmf/schema/scm_prepare_database.sh mysql -hcm1 -uroot -p123456 --scm-host cm1 scmdb scmdbu scmdbp

报错:没有jdbc驱动,驱动名字必须是”mysql-connector-java.jar”,修改完在初始化

说明:这个脚本就是用来创建和配置CMS需要的数据库的脚本。各参数是指:

mysql:数据库用的是mysql,如果安装过程中用的oracle,那么该参数就应该改为oracle。

-hcm1:数据库建立在cm1主机上面。也就是主节点上面。

-uroot:root身份运行mysql。-123456:mysql的root密码是***。

--scm-host cm1:CMS的主机,一般是和mysql安装的主机是在同一个主机上。

最后三个参数是:数据库名,数据库用户名,数据库密码。

ERROR Exception when creating/dropping database with user ‘root’ and jdbc url 'jdbc:mysql://cm1/?useUnicode=true&characterEncoding=UTF-8'

java.sql.SQLException: Access denied for user 'root'@'cm1' (using password: YES)

这里可以重新设置mysql的数据,然后刷新,或者直接将过期设置不检测

mysql> grant all on *.* to 'root'@'%' identified by '123456' with grant option;

mysql> update user set password = password('123456') where user='root';

mysql> select host,user,password from user where user='root';

mysql> delete from user where host !='%';

mysql> update user set password_expired = ‘N’ where user =’root’;

mysql> flush privileges;

mysql> exit

(7) 启动主节点cloudera-scm-server

[root@cm1 ~]# cp /opt/cloudera-manager/cm-5.10.2/etc/init.d/cloudera-scm-server /etc/init.d/cloudera-scm-server

[root@cm1 ~]# chkconfig cloudera-scm-server on

[root@cm1 ~]# vi /etc/init.d/cloudera-scm-server

CMF_DEFAULTS=${CMF_DEFAULTS:-/etc/default}改为=/opt/cloudera-manager/cm-5.10.2/etc/default

同时为了保证在每次服务器重启的时候都能启动cloudera-scm-server,应该在开机启动脚本/etc/rc.local中加入命令:service cloudera-scm-server restart

启动cloudera-scm-agent所有节点

[root@cm1 ~]# mkdir /opt/cloudera-manager/cm-5.10.2/run/cloudera-scm-agent

[root@cm1 ~]# cp /opt/cloudera-manager/cm-5.10.2/etc/init.d/cloudera-scm-agent /etc/init.d/cloudera-scm-agent

[root@cm1 ~]# chkconfig cloudera-scm-agent on

同时为了保证在每次服务器重启的时候都能启动cloudera-scm-agent,应该在开机启动脚本/etc/rc.local中加入命令:service cloudera-scm-agent restart

启动

/opt/cloudera-manager/cm-5.10.2/etc/init.d/cloudera-scm-server start

/opt/cloudera-manager/cm-5.10.2/etc/init.d/cloudera-scm-agent start

到此如果一直卡在

(8) 注意:1.去掉警告 echo 10 > /proc/sys/vm/swappiness 把10 修改为web UI提示的值 (每台节点都需要做)

2.去掉警告 echo never > /sys/kernel/mm/transparent_hugepage/defrag 把[always] madvise never 修改为nerver, 并把同一命添加到初始化脚本(/etc/rc.local)中,在重启时可以初始化该参数 (每台都需要)

echo "echo never >> /sys/kernel/mm/transparent_hugepage/defrag" >> /etc/rc.local

echo "echo never >> /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.local

(9) 自定义安装组件

升级Spark

[一].下载对应的版本的spark依赖文件

①csd包:

②parcel包:

注意:下载对应的系统,对应版本的parcel文件【manifest.json & SPARK*.parcel & SPARK*.parcel.sha】

[二].安装

1、停止集群服务及Cloudera Management Service服务

[root@cm1 ~]# /opt/cloudera-manager/cm-5.10.2/etc/init.d/cloudera-scm-server stop

[root@cm1 ~]# /opt/cloudera-manager/cm-5.10.2/etc/init.d/cloudera-scm-agent stop

2、(所有节点)CSD包到机器的/opt/cloudera/csd目录,并且修改文件的用户和组。注意如果本目录下有其他的jar包,把删掉或者移到其他目录

chown -R cloudera-scm:cloudera-scm /opt/cloudera/csd/*

3、(只在server节点)上传parcel包到机器的/opt/cloudera/parcel-repo目录下。注意,。如果有其他的安装包,不用删除 ,但是如果本目录下有其他的重名文件比如manifest.json文件,把它重命名备份掉。然后把那3个parcel包的文件放在这里

4、重启服务

[root@cm1 ~]# /opt/cloudera-manager/cm-5.10.2/etc/init.d/cloudera-scm-server start

[root@cm1 ~]# /opt/cloudera-manager/cm-5.10.2/etc/init.d/cloudera-scm-agent start

5、点击主机->Parcel页面,看是否多了个spark2的选项。如下图,你这里此时应该是分配按钮,点击,等待操作完成后,点击激活按钮

激活后,点击你的群集-》添加服务,添加spark2服务。注意,如果你这里看不到spark2服务,就请检查你的CSD包和parcel包是否对应,上面的步骤是否有漏掉。

添加节点

[一]修改域名和hosts(ip/域名映射)

[root@spark6 ~]# vi /etc/hostname

[root@spark6 ~]# vi /etc/hosts

注:生产环境尽量避免重启,vi /etc/hosts(永久但需要重启) hostname newHostname(临时有效)使用二者结合即可

[二]修改原来集群的hosts(ip/域名映射),把新节点的域名映射添加进入

(1)修改/etc/hosts之后正常情况是保存之后立即生效

(2)检查要添加节点的jdk (java -version)

[三]添加clouderamanager

(1) scp 集群中的从节点文件到新节点对应的目录

[root@spark6 ~]# scp -r /opt/cloudera-manager/ spark6:/opt/

(2) 删除对应目录下的文件

[root@spark6 ~]# rm -rf /opt/cloudera-manager/cm-5.10.2/lib/cloudera-scm-agent/*

[root@spark6 ~]# rm -rf /opt/cloudera-manager/cm-5.10.2/log/cloudera-scm-agent/*

注:分发过去的 /opt/cloudera-manager/cm-5.10.2/lib/中的cloudera-scm-server和 cloudera-scm-server-db是空的

/opt/cloudera-manager/cloudera/中的csd和 parcel-repo 也是空的

(3) 在代理节点添加scm管理用户

[root@spark6 ~]# useradd --system --home=/opt/cloudera-manager/cm-5.10.2/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm

id cloudera-scm

(4) 配置&启动

[root@spark6 ~]# cp /opt/cloudera-manager/cm-5.10.2/etc/init.d/cloudera-scm-agent /etc/init.d/cloudera-scm-agent

[root@spark6 ~]# chkconfig cloudera-scm-agent on

[root@spark6 ~]# vi /etc/init.d/cloudera-scm-agent

CMF_DEFAULTS=/opt/cloudera-manager/cm-5.10.2/etc/default

[root@spark6 ~]# vi /etc/rc.local

[root@spark6 ~]# service cloudera-scm-agent restart

[root@spark6 ~]# /opt/cloudera-manager/cm-5.10.2/etc/init.d/cloudera-scm-agent start

启动报

/opt/cloudera-manager/cm-5.10.2/etc/init.d/cloudera-scm-agent:行102: pstree: 未找到命令

centos7默认并没有安装pstree,所以会有pstree:command not found

安装pstree

yum install psmisc

(5) 进入web界面进行添加

主机 -> 所有主机 -> 向集群添加新主机 ->

① 由于已经将cm agent拷贝到各机器并启动了,此处不是通过IP或hostname查找的(即使查出来也无法选择),而是已存在的主机里面选择,选择新加的agent,点继续

② 出现下载parcel的界面

此处多多注意不同Linux版本要不同的parcel包

③ 检查主机正确性

[root@spark6 ~]# echo never > /sys/kernel/mm/transparent_hugepage/defrag

[root@spark6 ~]# echo never > /sys/kernel/mm/transparent_hugepage/enabled

禁止该设置 将命令添加到rc.local,用于系统初始化时设置

[root@spark6 ~]# vi /etc/rc.local

再去web点击重新运行,警告就没有了

④ 选择主机模板-此处可选择要安装的组件

这一步一定要选择,否则要重新分配角色。

⑤ 向集群中添加主机

(6) 处理程序运行需要的第三方jar包

添加节点导致没有jar包错、把其他节点的依赖jar包添加上去

/opt/cloudera/parcels/SPARK2/lib/spark2/jars

涉及的jar

spark-streaming-kafka-0-10_2.11-2.1.1.jar

à /opt/cloudera/parcels/SPARK2/lib/spark2/jars

[root@spark5 jars]# scp spark-streaming-kafka-0-10_2.11-2.1.1.jar spark6:/opt/cloudera/parcels/SPARK2/lib/spark2/jars

spark-streaming-kafka_2.11-1.6.3.jar

à /opt/cloudera/parcels/SPARK2/lib/spark2/jars

[root@spark5 jars]# scp spark-streaming-kafka_2.11-1.6.3.jar spark6:/opt/cloudera/parcels/SPARK2/lib/spark2/jars

commons-pool2-2.4.1.jar

à /opt/cloudera/parcels/SPARK2/lib/spark2/jars

[root@spark5 jars]# scp commons-pool2-2.4.1.jar spark6:/opt/cloudera/parcels/SPARK2/lib/spark2/jars

json-lib-0.9.jar

à /opt/cloudera/parcels/CDH-5.10.2-1.cdh5.10.2.p0.5/jars/

scp json-lib-0.9.jar spark6:/opt/cloudera/parcels/CDH-5.10.2-1.cdh5.10.2.p0.5/jars/

json-lib-0.9.jar

à/opt/cloudera/parcels/CDH-5.10.2-1.cdh5.10.2.p0.5/lib/hadoop-mapreduce

[root@spark6 jars]# cp json-lib-0.9.jar /opt/cloudera/parcels/CDH-5.10.2-1.cdh5.10.2.p0.5/lib/hadoop-mapreduce/

mysql-connector-java.jar

à/opt/cloudera/parcels/CDH-5.10.2-1.cdh5.10.2.p0.5/lib/spark/lib/mysql-connector-java.jar(no)

mysql-connector-java.jar

à/opt/cloudera/parcels/SPARK2-2.2.0.cloudera2-1.cdh5.12.0.p0.232957/lib/spark2/jars/mysql-connector-java.jar(no)

ezmorph-0.9.jar

à /opt/cloudera/parcels/CDH-5.10.2-1.cdh5.10.2.p0.5/lib/hadoop-mapreduce

ezmorph-0.9.jar

à /opt/cloudera/parcels/CDH-5.10.2-1.cdh5.10.2.p0.5/jars

jedis-2.9.0.jar

à/opt/cloudera/parcels/SPARK2-2.2.0.cloudera2-1.cdh5.12.0.p0.232957/lib/spark2/jars/

大数据和云计算的关系

大数据技术生态体系

大数据项目架构

大数据HBase原理

大数据面试题整合

标签: #centos7自带的zlib #centos pstree