环境5台装有centos 6.9系统的服务器
1.网络配置
sudo vi /etc/sysconfig/network
修改hostname:
NETWORKING=yes
HOSTNAME=ZXXS-52
通过service network restart
重启网络服务生效sudo vi /etc/hosts
,将集群中主机ip 与主机名添加进去
10.30.100.52 ZXXS-52 master1
10.30.100.53 ZXXS-53 master2
10.30.100.54 ZXXS-54 slave1
10.30.100.55 ZXXS-55 slave2
10.30.100.56 ZXXS-56 slave3
集群中的每台机器都需要配置,且需要一致。
2.SSH无密码登陆
现在主节点执行命令rm -rf ~/.ssh/*
删除已有的密钥,然后执行ssh-keygen -t rsa
一路回车,生成三个文件authorized_keys:
授权文件,存放远程登陆的公钥id_rsa:
生成的私钥文件id_rsa.pub:
生成的公钥文件
在配置过程中对权限也有要求
- 1.
.ssh
目录的权限必须是700 - 2.
.ssh/authorized_key
文件的权限必须是600
将公钥添加到授权文件中:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
并设置权限chmod 600 ~/.ssh/authorized_keys
,
并将文件复制到所有的节点中:scp ~/.ssh/authorized_keys hadoop@ZXXS-52:~/.ssh/
,这样就可以实现单方向的无密码登陆了。那如果向实现双向无密码登陆怎么办?有两种方法
- 1.将.ssh下面的文件全部拷贝到其他节点
- 2.在其他节点进行无密码设置,并将
id_rsa.pub
追加到主节点的授权文件authorized_keys
中,并将该文件分发到 各个节点。
注意在scp命令中username@hostname,username是登陆的用户,hostname是主机名,也可以是ip地址。如果远程登陆的用户和被登陆主机的用户相同可以省略username,如下scp -P 3600 jdk-8u144-linux-x64.rpm 10.30.100.53:/home/hadoop/
3.安装Java环境
centos默认安装的是openjdk,不知是否满足cdh的需求,索性就直接卸载掉了。先使用命令rpm -qa | grep java
找出所有与Java相关的安装包,卸载自己安装的Java可能需要命令是rpm -qa | grep jdk
使用强制卸载命令一一卸载rpm -e --nodeps 包名
,在官网下载jdk8的rpm格式。
安装rpm -ivh jdk-8u144-linux-x64.rpm
rpm这种安装方式不需要配置环境变量,不过我们还是配置一下sudo vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_144
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
4.启用NTP(Network Time Protocol)
参考官网,CHD要求集群中的主机时间保持同步,所以就需要在集群中的每台机器配置NTP服务,并且要求开机自动启动。配置开机启动chkconfig ntpd on
,并检查是否设置成功chkconfig --list ntpd
,其中2-5为on代表成功。进入/etc/ntp.conf
查看配置文件,手动校准sudo ntpdate -u 0.centos.pool.ntp.org
5.MySQL
Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等;元数据需要不断的更新、需要将元数据存储在数据库中,录入mysql。
使用命令yum install mysql-server
安装mysql服务器,使用命令chkconfig mysqld on
设置开机启动,并service mysqld start
启动mysql服务,设置root的初始密码mysqladmin -u root password 'admin'
。密码设置好了,使用命令mysql -uroot -padmin
进入mysql的命令控制台。
sql
#Activity Monitor
create database amon DEFAULT CHARACTER SET utf8;
#Reports Manager
create database rman DEFAULT CHARACTER SET utf8;
#Hive Metastore Server
create database hive DEFAULT CHARACTER SET utf8;
#Sentry Server
create database sentry DEFAULT CHARACTER SET utf8;
#Cloudera Navigator Audit Server
create database nav DEFAULT CHARACTER SET utf8;
#Cloudera Navigator Metadata Server
create database navms DEFAULT CHARACTER SET utf8;
为root用户授权访问以上所有的数据库的权限:
grant all privileges on *.* to 'root'@'ZXXS-52' identified by 'admin' with grant option;
flush privileges; --立即生效
也可以是单独创建一个用户并授权:
CREATE USER 'uname'@'%' IDENTIFIED BY 'password';
GRANT all privileges ON database.* TO 'uname'@'%' identified by 'password';
flush privileges;
查看mysql的编码:mysql> show variables like '%char%';
修改编码:set character_set_connection utf8
5.安装
下面的安装比较的简单,因为是可视化。就不细说了可以参考这一篇,下面只说我安装时候出现的问题
我把这两个设置成一样,然后就会卡在激活状态,另外一个就是将mysql的驱动复制到hive的lib中。这些都比较简单,因为有很清楚的日志