文章目录
- 2、安装Linux系统
- 3、配置静态IP
- 4、修改主机名
- 5、修改hosts列表
- 6、关闭防火墙
- 7、修改selinux
- 8、NTP时钟与主机同步
- 9、Ssh免**登录
- 10、安装JDK(所有节点)
- 11、安装mysql数据库(NameNode节点)
- 12、安装Cloudera-Manager
- 12.1.解压CM tar包
- 12.2.创建cloudera-scm用户(所有节点)
- 12.3.创建本地元数据保存目录(主节点)
- 12.4.拷贝mysql-connector-java到各个节点指定目录下(所有的节点)
- 12.5.配置从节点cloudera-manger-agent指向主节点服务器(所有节点)
- 12.6.创建parcel-repo仓库目录(主节点)
- 12.7.创建parcels目录(所有节点)
- 12.8.初始脚本配置数据库scm_prepare_database.sh(主节点)
- 12.9.启动主节点cloudera-scm-server
- 12.10.重启自动启动脚本(所有节点)
- 12.11.启动cloudera-scm-agent(所有节点)
- 13、在浏览器安装CDHs
1.1.环境搭建所需安装文件表
| 项目名称 | 包名 |
|---|---|
| Liunx系统: | CentOS-7-x86_64-Minimal-1511 |
| JDK: | jdk-8u131-linux-x64.tar.gz |
| MySQL文件: | compat-mysql51-5.1.73-1.el6.remi.x86_64.rpm mysql-connector-java-5.1.46-bin.jar MySQL-client-5.6.42-1.el7.x86_64.rpm MySQL-devel-5.6.42-1.el7.x86_64.rpm MySQL-server-5.6.42-1.el7.x86_64.rpm |
| Cloudera Manager 安装包: http://archive.cloudera.com/cm5/cm/5/ |
cloudera-manager-centos7-cm5.11.0_x86_64.tar.gz |
| CDH 5.11 安装包: http://archive.cloudera.com/cdh5/parcels/latest/ |
CDH-5.11.0-1.cdh5.11.0.p0.34-el7.parcel CDH-5.11.0-1.cdh5.11.0.p0.34-el7.parcel.sha1 manifest.json |
| KAFKA安装包: csd: http://archive.cloudera.com/csds/kafka/ parcel:http://archive.cloudera.com/kafka/parcels/latest/ |
KAFKA-1.2.0.jar KAFKA-2.1.1-1.2.1.1.p0.18-el7.parcel KAFKA-2.1.1-1.2.1.1.p0.18-el7.parcel.sha1 manifest.json |
| SPARK2安装包: csd:http://archive.cloudera.com/spark2/csd/ parcel:http://archive.cloudera.com/spark2/parcels/2.1.0.cloudera1/ |
SPARK2_ON_YARN-2.1.0.cloudera1.jar SPARK2-2.1.0.cloudera1-1.cdh5.7.0.p0.120904-el7.parcel SPARK2-2.1.0.cloudera1-1.cdh5.7.0.p0.120904-el7.parcel.sha1 manifest.json |
| Phoenix: http://archive.cloudera.com/cloudera-labs/phoenix/parcels/1.3/ |
CLABS_PHOENIX-4.7.0-1.clabs_phoenix1.3.0.p0.000-el7.parcel CLABS_PHOENIX-4.7.0-1.clabs_phoenix1.3.0.p0.000-el7.parcel.sha1 manifest.json |
| Zeppelin: http://zeppelin.apache.org/download.html |
zeppelin-0.8.0-bin-all.tgz |
2、安装Linux系统
略
3、配置静态IP
#vi /etc/sysconfig/network-scripts/ifcfg-eth0:添加静态IP。
注:网卡配置文件不一定是eth0,如果有多块网卡要配置对应的网卡配置文件。
保存退出 :wq
重启:service network restart
验证 : ifconfig
4、修改主机名
#Vim /etc/sysconfig/network
HOSTNAME=NameNode
确实修改生效命令:
#hostname NameNode
检查主机名:
#hostname
其他4台一样修改为SNameNode、DataNode1、 DataNode 2、 DataNode 3
5、修改hosts列表
打开文件添加列表:
#Vim /etc/hosts
10.200.90.162 SNameNode
10.200.90.163 DataNode1
10.200.90.164 DataNode2
10.200.90.165 DataNode3
6、关闭防火墙
如果你的系统上没有安装防火墙,使用命令安装
安装firewalld 防火墙:
#yum install firewalld
开启服务:
#systemctl start firewalld.service
关闭防火墙:
#systemctl stop firewalld.service
开机自动启动:
#systemctl enable firewalld.service
关闭开机制动启动:
#systemctl disable firewalld.service
使用firewall-cmd 命令查看状态:
#firewall-cmd --state //running 表示运行
7、修改selinux
对于强制访问控制的实现
# vim /etc/sysconfig/selinux
SELINUX=disabled
重启才能生效,重启后检查
#sestatus -v
SELinux status: disabled
表示已经关闭了
8、NTP时钟与主机同步
NTP服务的安装和配置
首先安装ntp
#yum install ntp
安装完毕之后,启动服务
#systemctl start ntpd.service
设置开机自启动
#systemctl enable ntpd.service
修改/etc/ntp.conf文件:
#vim /etc/ntp.conf
注释掉所有server ..*的指向,新添加一条可连接的ntp服务器
server ntp1.aliyun.com iburst
在其他节点上把ntp指向master服务器地址即可。
注意:如果修改不成功直接配置和主节点一样。
server 10.200.90.161 iburst
设置后,重启ntpd服务,用ntpstat来检查效果【大概几秒钟就可以看到效果】
#systemctl restart ntpd
#ntpstat
检查是否已同步,配置完以后5台服务器的时间是同步的。
#date
9、Ssh免**登录
查看是否安装openssh和rsync如果没有安装则使用yum安装。
#rpm -qa | grep openssh
#rpm -qa | grep rsync
输入:ssh-****** -t rsa一路回车即可,生成的**写入一个文件中:
#cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
然后将其他4台的**写入本机的authorized_keys文件,再复制到每台相应的文件中。
注意:复制粘贴的不行,需要用cat * >> * ,命令才能生效。
验证:
#ssh SNameNode
10、安装JDK(所有节点)
在/usr目录下创建java目录:#mkdir java
在此目录下解压jdk包:
#tar -zxvf jdk-8u131-linux-x64.tar.gz
配置环境变量,打开文件加入下面两行:
#vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_131
export PATH=$PATH:$JAVA_HOME/bin
使配置生效:
#source /etc/profile
验证:
#java -version
11、安装mysql数据库(NameNode节点)
11.1.Mysql检查
检查mysql是否安装:
#rpm -qa | grep -i mysql;
删除原有的mysql:
#yum -y remove mysql-libs*;
在/opt下创建rpm文件,将mysql的RPM包(如下三个文件)放入/opt/rpm文件下
MySQL-server-5.6.42-1.el7.x86_64.rpm
MySQL-devel-5.6.42-1.el7.x86_64.rpm
MySQL-client-5.6.42-1.el7.x86_64.rpm
11.2.安装mysql
#rpm -ivh MySQL-server-5.6.42-1.el7.x86_64.rpm
#rpm -ivh MySQL-devel-5.6.42-1.el7.x86_64.rpm
#rpm -ivh MySQL-client-5.6.42-1.el7.x86_64.rpm错误处理1:
需要安装autoconf:
#yum -y install autoconf
错误处理2:
分析:这是在安装过程中有依赖包发生了冲突,解决思路,要么忽略冲突,要么删除有冲突的依赖包。
解决办法1:后面加上–force –nodeps(推荐)
#rpm -ivh MySQL-server-5.6.42-1.el7.x86_64.rpm --force –nodeps
解决办法2:删除依赖包
yum -y remove mysql-libs-1*
参考网站:
https://blog.csdn.net/wisdom_c_1010/article/details/55506081
https://blog.csdn.net/testcs_dn/article/details/39026213
11.3.配置文件位置
#cp /usr/share/mysql/my-default.cnf /etc/my.cnf
在配置文件中末尾增加以下配置并保存
#vim /etc/my.cnf
[mysqld]
default-storage-engine = innodb
innodb_file_per_table
collation-server = utf8_general_ci
init-connect = 'SET NAMES utf8'
character-set-server = utf8
11.4.初始化mysql及设置密码
#/usr/bin/mysql_install_db
#service mysql start //启动服务
#cat /root/.mysql_secret //查看root账号密码
password set for the root user at Wed Dec 11 23:32:50 2013 (local time): qKTaFZnl
#mysql -uroot –pqKTaFZnl
mysql> SET PASSWORD = PASSWORD('123456'); #设置密码为123456
mysql> exit
#mysql -uroot -p123456
11.5.允许远程登陆
mysql> use mysql;
mysql> select host,user,password from user;
mysql> update user set password=password('123456') where user='root';
mysql> update user set host='%' where user='root' and host='localhost';
mysql> flush privileges;
mysql> exit
11.6.创建数据库
mysql> create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)
mysql> create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)
mysql> create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)
mysql> create database monitor DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)
mysql> create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)
mysql> grant all on *.* to [email protected]"%" Identified by "123456";
mysql> flush privileges ;
11.7.设置开机自启动
#chkconfig mysql on
#chkconfig --list | grep mysql
mysql 0:off 1:off 2:on 3:on 4:on 5:on 6:off
MySQL的默认安装位置
/var/lib/mysql/ #数据库目录
/usr/share/mysql #配置文件目录
/usr/bin #相关命令目录
/etc/init.d/mysql #启动脚本
12、安装Cloudera-Manager
12.1.解压CM tar包
解压cm tar包到指定目录所有服务器都要或者在主节点解压好,然后通过scp到各个节点同一目录下。
#mkdir /opt/cloudera-manager
#tar -axvf cloudera-manager-centos7-cm5.11.0_x86_64.tar.gz -C /opt/cloudera-manager
12.2.创建cloudera-scm用户(所有节点)
#useradd --system --home=/opt/cloudera-manager/cm-5.11.0/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment “Cloudera SCM User” cloudera-scm
12.3.创建本地元数据保存目录(主节点)
在主节点创建cloudera-manager-server的本地元数据保存目录
#mkdir /var/cloudera-scm-server
#chown cloudera-scm:cloudera-scm /var/cloudera-scm-server
#chown cloudera-scm:cloudera-scm /opt/cloudera-manager
12.4.拷贝mysql-connector-java到各个节点指定目录下(所有的节点)
将下载好的mysql-connector-java-5.1.46-bin.jar放到/opt/cloudera-manager/cm-5.11.0/share/cmf/lib/和/usr/share/java(如果没有这个目录则新建)目录下,并修改文件名,
# mv mysql-connector-java-5.1.46-bin.jar mysql-connector-java.jar。
12.5.配置从节点cloudera-manger-agent指向主节点服务器(所有节点)
#vim /opt/cloudera-manager/cm-5.11.0/etc/cloudera-scm-agent/config.ini
将server_host改为CMS所在的主机名即NameNode
12.6.创建parcel-repo仓库目录(主节点)
#mkdir -p /opt/cloudera/parcel-repo
#chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo
将下载好的文件放入/opt/cloudera/parcel-repo下,
CDH-5.11.0-1.cdh5.11.0.p0.34-el7.parcel
CDH-5.11.0-1.cdh5.11.0.p0.34-el7.parcel.sha
manifest.json
注意:其中CDH-5.11.0-1.cdh5.11.0.p0.34-el7.parcel.sha1后缀要把1去掉。
12.7.创建parcels目录(所有节点)
#mkdir -p /opt/cloudera/parcels
#chown cloudera-scm:cloudera-scm /opt/cloudera/parcels
解释:Clouder-Manager将CDHs从主节点的/opt/cloudera/parcel-repo目录中抽取出来,分发解压**到各个节点的/opt /cloudera/parcels目录中。
12.8.初始脚本配置数据库scm_prepare_database.sh(主节点)
#/opt/cloudera-manager/cm-5.11.0/share/cmf/schema/scm_prepare_database.sh mysql -hNameNode -uroot -p123456 --scm-host NameNode scm scm scm
说明:这个脚本就是用来创建和配置CMS需要的数据库的脚本。各参数是指:mysql:数据库用的是mysql,如果安装过程中用的oracle,那么该参数就应该改为oracle。-hhadoop1:数据库建立在hadoop1主机上面。也就是主节点上面。-uroot:root身份运行mysql。-123456:mysql的root密码是***。–scm-host hadoop1:CMS的主机,一般是和mysql安装的主机是在同一个主机上。最后三个参数是:数据库名,数据库用户名,数据库密码。错误1: 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)
解决方案:如果执行的时候报以上错误,可能是配置hosts的有问题,#vim /etc/hosts添加127.0.0.1 localhost.NameNode。错误2: 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>use mysql;
mysql> select host,user,password_expired from user;
这里可以重新设置mysql的数据,然后刷新,或者直接将过期设置不检测
mysql>use 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: 0
mysql> flush privileges;
12.9.启动主节点cloudera-scm-server
#cp /opt/cloudera-manager/cm-5.11.0/etc/init.d/cloudera-scm-server /etc/init.d/cloudera-scm-server
#chkconfig cloudera-scm-server on
此时service cloudera-scm-server start的话会报错:
因为cloudera-scm-server里面的变量路径配置不正确!
#vim /etc/init.d/cloudera-scm-server
CMF_DEFAULTS=${CMF_DEFAULTS:-/etc/default}改为=/opt/cloudera-manager/cm-5.11.0/etc/default
此时service cloudera-scm-server start就不会报错了,同时为了保证在每次服务器重启的时候都能启动cloudera-scm-server,应该在开机启动脚本中加入命令:
#vim /etc/rc.local
service cloudera-scm-server restart
保存退出。
12.10.重启自动启动脚本(所有节点)
看了上面的注释就明白了吧,其实给rc.local加上执行权限就可以了
#ll /etc/rc.local
lrwxrwxrwx. 1 root root 13 2月 16 23:32 /etc/rc.local -> rc.d/rc.local
#ll /etc/rc.d/rc.local
-rw-r--r--. 1 root root 502 3月 9 00:16 /etc/rc.d/rc.local
#chmod +x /etc/rc.d/rc.local
#ll /etc/rc.d/rc.local
-rwxr-xr-x. 1 root root 502 3月 9 00:16 /etc/rc.d/rc.local
12.11.启动cloudera-scm-agent(所有节点)
#mkdir /opt/cloudera-manager/cm-5.11.0/run/cloudera-scm-agent
#cp /opt/cloudera-manager/cm-5.11.0/etc/init.d/cloudera-scm-agent /etc/init.d/cloudera-scm-agent
#chkconfig cloudera-scm-agent on
同样此时service cloudera-scm-agent start的话会报错:
因为cloudera-scm-agent里面的变量路径配置不正确!参照上文server中的配置
#vim /etc/init.d/cloudera-scm-agent
CMF_DEFAULTS=${CMF_DEFAULTS:-/etc/default}改为=/opt/cloudera-manager/cm-5.11.0/etc/default
此时service cloudera-scm-agent start就不会报错了,同时为了保证在每次服务器重启的时候都能启动cloudera-scm-agent,应该在开机启动脚本/etc/rc.local中加入命令:service cloudera-scm-agent restart
13、在浏览器安装CDHs
等待主节点安装并且启动就在浏览器中进行操作了进入10.200.90.161:7180 默认使用admin admin登录以下在浏览器中使用操作安装
13.1.选择express版本
13.2.组件提示
配置主机!由于我们在各个节点都安装启动了agent,并且在各个节点都在配置文件中指向NameNode是server节点,所以各个节点的agent就会给agent发消息报告,所以这里我们可以在“当前管理的主机”中看到五台个主机,全部勾选并继续。注意如果cloudera-scm-agent没有设为开机启动,如果以上有重启这里可能会检测不到其他服务器。
在每台机器中执行:
#echo 10 > /proc/sys/vm/swappiness
#echo never > /sys/kernel/mm/transparent_hugepage/defrag
#echo never > /sys/kernel/mm/transparent_hugepage/enabled
并编辑vim /etc/rc.local 加入以上2,3两天语句。
13.3.选择相应的CDH版本
点击继续,就开始分发parcels到各个节点。选择要安装的服务,这里选择所有服务。
13.4.角色分配
最好自己分配各个角色所在的节点,如果不知道怎么分配角色先使用默认的。后期也可以修改。
13.5.数据库设置选择
图上显示Hue数据库连接失败,解决方法,下载compat-mysql51-5.1.73-1.el6.remi.x86_64.rpm文件。然后安装。
#rpm -ivh compat-mysql51-5.1.73-1.el6.remi.x86_64.rpm
安装后,无需建立软链接,自然就有了。
#vim /etc/ld.so.conf打开文件在尾部添加:/usr/lib64/mysql 保存退出。但是这里,需要执行一下#ldconfig命令。
说明:ldconfig命令的用途主要是在默认搜寻目录/lib和/usr/lib以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件。缓存文件默认为/etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表,为了让动态链接库为系统所共享,需运行动态链接库的管理命令ldconfig,此执行程序存放在/sbin目录下。
参考网站:https://blog.csdn.net/shushugood/article/details/76686062
再次尝试测试连接,依然失败,查看日志文件/opt/cloudera-manager/cm-5.11.0/log/cloudera-scm-server/cloudera-scm-server.log显示:
解决办法:
#yum install libxslt.so* 自动安装缺少的包。
参考网站:https://blog.csdn.net/lzwglory/article/details/54808074
问题解决,然后一路点继续,直到完成。Hue的默认访问端口为8888。
13.6.配置NameNode HA
1、从CDH Manager页面进入HDFS,点开右上角”操作”->”启用Hign Availability”。
2、进入”下一步”,填写Nameservice名称,默认值为”nameservice1”
注意:nameservice名称是任意的,但是HA配置中不可缺少的,因为在没有HA的情况下访问Hadoop可以通过唯一的NameNode,但如果配置HA的话可以使用Nameservice作为HDFS绝对路径的一部分用于HDFS访问。
3、进入”下一步”,分配角色,选择备份NameNode节点,以及选择至少3个节点作为JournalNode
注意:JournalNode的作用是共享存储,它是主备NameNode节点都可读写的共享目录,系统是否可用也受限于共享目录是否可用,因此Cloudera配置HA时定义JournalNode至少3台或以上,这是为了消除所有的单点故障。
4、审核更改,配置备份NameNode节点的NameNode数据目录以及JournalNode编辑目录(备份NameNode的数据目录默认与主NameNode的数据目录一致,但缺少情况下JournalNode编辑目录为空,需要自己指定)
注意:附加选项,这表明如果配置了NameNode HA,Secondary NameNode将被移除,如果HA和Secondary NameNode同时存在将会报错。
5、开始启用High Availability,包括一系列的操作,涉及JournalNode、Zookeeper组件。如果发现有如下错误信息,可以忽略。
6、完成,查看HDFS页面
13.7.修改Hive元数据信息
做完HA后 hive 查询hdfs上文件只认 hdfs://nameservice1,需要修改hive 元数据库MySQL数据库里面hive库下的DBS和SDS表信息。
DBS:Hive数据仓库的总路径
SDS :Hive每张表对应的路径
将原来节点信息修改为HA后的名称。
DBS 表DB_LOCATION_URI:hdfs://nodexx:8020/user/hive/warehouse 修改为hdfs://nameservice1/user/hive/warehouse 即可。
mysql>update DBS set DB_LOCATION_URI='hdfs://nameservice1/user/hive/warehouse' where DB_ID=1;
mysql>update DBS set DB_LOCATION_URI='hdfs://nameservice1/user/hive/warehouse/demo.db' where DB_ID=2925;
SDS表 需要将LOCATION 修改为hdfs://nameservice1开头。