三、使用CDH搭建Hadoop集群环境
CDH(Cloudera’s Distribution, including Apache Hadoop),是Hadoop众多分支中的一种,由Cloudera维护,基于稳定版本的Apache Hadoop构建,并集成了很多补丁,可直接用于生产环境。
我们使用CDH6.3.2的版本进行安装。
CDH分为Cloudera Manager管理平台和CDH parcel(parcel包含各种组件的安装包),需要先安装CM,再安装parcel。
CM 6.3.1,CDH 6.3.2 (6.3.3版本及以上的要收费了)
组件版本支持情况
准备工作
1、修改文件打开限制
vi /etc/security/limits.conf * soft nofile 65536 * hard nofile 65536 * soft nproc 131072 * soft nproc 131072
2、关闭防火墙
systemctl disable firewalld systemctl stop firewalld
3、修改主机名及hosts
依次修改主机名 vi /etc/hostname 修改hosts文件 vi /etc/hosts 192.168.137.101 node01 192.168.137.102 node02 192.168.137.103 node03 生效 source /etc/hosts
4、免密设置
node01 设置
ssh-keygen -t rsa 一路回车 ssh-copy-id node02 ssh-copy-id node03 输入密码
5、安装jdk
scp jdk-8u221-linux-x64.rpm node02:/opt/ scp jdk-8u221-linux-x64.rpm node03:/opt/ rpm -ivh jdk-8u221-linux-x64.rpm java -version vim /etc/profile # 末尾追加以下内容 export JAVA_HOME=/usr/java/default export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar source /etc/profile echo $JAVA_HOME
6、关闭selinux
//临时生效selinux设置 setenforce 0 //修改配置文件 vi /etc/selinux/config 把SELINUX=enforcing修改为SELINUX=disabled
7、安装ntp服务
// 安装 ntp 服务 yum install -y ntp // 开启并设置开机自启ntp服务 systemctl start ntpd systemctl enable ntpd // 查看ntp服务状态 systemctl status ntpd
8、node01安装Mysql
移除mariadb yum remove mariadb-libs.x86_64 wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm yum localinstall ./mysql80-community-release-el7-1.noarch.rpm yum install mysql-community-server service mysqld start # 查看临时密码 grep 'temporary password' /var/log/mysqld.log # 登录 mysql -uroot -p # 输入刚才的密码 ALTER USER 'root'@'localhost' IDENTIFIED BY 'Bigdataflowing@123'; # 新建scm用户 CREATE USER 'scm'@'%' IDENTIFIED BY 'Bigdataflowing@123'; grant all privileges on *.* to 'scm'@'%' with grant option; flush privileges;
新建CDH所需的数据库:
CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; CREATE DATABASE reports DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; create user 'root'@'localhost' identified by 'Bigdataflowing@123'; grant all privileges on *.* to 'root'@'%' with grant option; flush privileges;
9、各节点准备mysql8的驱动
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz tar -zxf mysql-connector-java-5.1.46.tar.gz mkdir /usr/share/java/ cp mysql-connector-java-5.1.46/mysql-connector-java-5.1.46-bin.jar /usr/share/java/mysql-connector-java.jar
安装CDH
1、配置本地yum源
node01 安装httpd createrepo并设置开机自启动: yum -y install httpd createrepo systemctl start httpd systemctl enable httpd 将包放在目录下 mkdir -p /var/www/html/cloudera-repos/cm6 将文件传入此目录下 createrepo . 配置本地yum源 备份 cp -r /etc/yum.repos.d /etc/yum.repos.d.bak cd /etc/yum.repos.d/ vim cloudera-manager.repo [cloudera-manager] name=Cloudera Manager 6.3.1 baseurl=http://node01/cloudera-repos/cm6 gpgcheck=0 enabled=1 yum clean all && yum makecache
验证成功,浏览器访问 http://192.168.127.101/cloudera-repos/cm6/
分发包 scp -r cloudera-manager.repo root@node02:$PWD scp -r cloudera-manager.repo root@node03:$PWD 其他节点 yum clean all && yum makecache
node01安装cloudera manager server
yum install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server 安装完CM后/opt/ 下会出现cloudera目录,上传cdh parcel 文件到/opt/cloudera/parcel-repo/ chown -R cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo/*
初始化数据库
cd /opt/cloudera/cm/schema/ ./scm_prepare_database.sh -h localhost -P 3306 mysql scm scm Bigdataflowing@123 成功消息 [main] DbCommandExecutor INFO Successfully connected to database. All done, your SCM database is configured correctly!
3、node02 node03安装agent
yum install -y cloudera-manager-daemons cloudera-manager-agent 配置Agent文件:vim /etc/cloudera-scm-agent/config.ini 将 server_host=localhost 更改为: server_host=node01
启动
server 和agent 一起启动,报错看log /var/log/cloudera-scm-server
node01
systemctl start cloudera-scm-server systemctl enable cloudera-scm-server
node02 node03
systemctl start cloudera-scm-agent & systemctl enable cloudera-scm-agent
访问网址 http://192.168.137.101:7180/cmf/login成功!
账号密码 admin/admin
那么CDH管理工具已经安装完成,下面我们使用CDH安装Hadoop集群环境。
四、安装部署HADOOP大数据集群
开始安装
同意条款
选择安装版本,可以选择试用或者免费版
开始安装,输入集群名称
选择主机
这里有坑,直接选择后边没法改存储库
这里可以点上方按钮进入主页,先删除主机,再加回来
按下面设置好,大部分已经默认
JDK已经安装 不用选
机器账号密码
这里会做一些检测,基本是一些警告,选择 i understand 继续。
下面进入到组件的安装,由于内存有限,我们选择自定义服务,先只安装hdfs和hive,zookeeper,其他的组件后续也可以增加。
要设置节点的分配,尽量平均就可以。
这里全部连node01的mysql库
一些hdfs设置,可以默认
等待安装中。。
安装基本完成。
安装完成!可以愉快的玩耍了。
踩坑大全
1、客户机操作系统已禁用 CPU,请关闭或重置虚拟机。
大部分是Vmvare版本及镜像问题,使用Vmvare16.1.2版本
2、mysql版本:'for the right syntax to use near 'identified by 'password' with grant option'
问题分析:mysql版本8.0.13,在给新用户授权时,发生了变化:
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by 'password' with grant option' at line 5, Time: 0.000000s
出错的语句:
grant all privileges on . to 'root'@'172.16.10.203' identified by 'password' with grant option
修正后的语句:分开三次执行
创建账户
create user 'root'@'172.16.10.203' identified by 'password'
赋予权限,with grant option这个选项表示该用户可以将自己拥有的权限授权给别人
grant all privileges on . to 'root'@'172.16.10.203' with grant option
改密码&授权超用户,flush privileges 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里
flush privileges;
3、missing requires of libmysqlclient.so.18()(64bit)
错误提示安装依赖的库文件没有找到:libmysqlclient.so.18()(64bit)
解决: 缺少Percona-XtraDB-Cluster-shared-55-5.5.37-25.10.756.el6.x86_64.rpm这个包
rpm -ivh Percona-XtraDB-Cluster-shared-55-5.5.37-25.10.756.el6.x86_64.rpm
4、cm启动后无法访问
centos7会开启ipv6,需要禁用掉
vi /etc/default/grub
GRUB_CMDLINE_LINUX="ipv6.disable=1 crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
grub2-mkconfig -o /boot/grub2/grub.cfg
5、Parcel hash file missing: CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha
缺少CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha文件,添加到指定目录
6、Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was
14: curl#6 - "Could not resolve host: mirrorlist.centos.org; Unknown error"
yum源有问题,修改 /etc/yum.repos.d下yum配置文件
7、无法安装 cloudera-manager-agent 包
查看log看具体报错信息