背景:
因为业务要求,需要在三台物理服务器上搭建大数据平台。经过多方查找资料,最终搭建成功。
鉴于 1)搭建过程中,出现很多小问题,解决起来花费大量的精力和时间
2)解决问题查找资料时候,多数资料都比较老了,并且不够系统
3)在物理服务器上搭建的资料较少,有必要进行补充
4)将解决过程分享给有类似业务需求的新手们,节省时间
出于上述考量,对本次操作过程做一个整理。后边还需要用Docer技术与Ambari的结合,有兴趣的小伙伴可以一起交流交流。
目录
Ambari 是什么
基础集群信息:
1.配置静态IP、DNS
2.配置hostname
3.关闭防火墙与SElinux
4.SSH无密码登陆
5. 修改YUM源
6.JDK1.8
7.NTP时间同步
6.安装HTTP服务器(后期要用的)
7.安装mysql
8.安装nginx(存疑、我没有安装但是不影响后期正常使用)
9.安装mysql jdbc
Ambari 是创建、管理、监视 Hadoop 的集群的软件。这里的 Hadoop 是广义,指的是 Hadoop 整个生态圈(例如 Hive,Hbase,Sqoop,Zookeeper ,Spark等),而并不仅是特指 Hadoop。用一句话来说,Ambari 就是为了让 Hadoop 以及相关的大数据软件更容易使用的一个工具。 Ambari 现在所支持的平台组件也越来越多,例如流行的 Spark,Storm 等计算框架,以及资源调度平台 YARN 等,我们都能轻松地通过 Ambari 来进行部署,为想构建大数据平台的初学者提供了很大的便捷。
Ambari 自身也是一个分布式架构的软件,主要由两部分组成:Ambari Server 和 Ambari Agent。简单来说,用户通过 Ambari Server 通知 Ambari Agent 安装对应的软件;Agent 会定时地发送各个机器每个软件模块的状态给 Ambari Server,最终这些状态信息会呈现在 Ambari 的 GUI,方便用户了解到集群的各种状态,并进行相应的维护。详细的操作和介绍会在后续章节介绍。
服务器配置 | 服务器IP | hostname | 系统版本 |
CPU12核/内存64G/4T硬盘 | 192.168.9.61 | ambari01.hadoop | CentOS Linux release 7.4.1708 (Core) |
CPU12核/内存64G/4T硬盘 | 192.168.9.62 | ambari02.hadoop | CentOS Linux release 7.4.1708 (Core) |
CPU8核/内存64G/4T硬盘 | 192.168.9.63 | ambari03.hadoop | CentOS Linux release 7.5.1708 (Core) |
通过资料查询,发现需要很多准备工作要做。主要的时间浪费也是在这一部分。在查询文献资料过程中发现文献资料相互间说的都不太一样。本文尽可能多的准备了前期环境,进行分享。
首先,进入到网卡,然后编辑。
[root@ambari-1 ~]# cd /etc/sysconfig/network-scripts
[root@ambari-1 network-scripts]# vim ifcfg-enp0s31f (显卡名字不一样“ls”查看下再编辑)
网卡编辑详细信息
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static #配置静态IP,网关,子网掩码
DEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yes
IPV6_FAILURE_FATAL=no
IPV6_AUTOCONF=yesIPV6_DEFROUTE=yes
UUID=028bc986-093a-4e51-8f5d-0a78690ec6c5
IPV6_ADDR_GEN_MODE=stable-privacyNAME=enp0s31f6
DEVICE=enp0s31f6
ONBOOT=yes #表示系统将在启动时开启该接口。
IPADDR0=192.168.9.61 #设置IP地址
PREFIXO0=24 #设置子网掩码
DNS1=8.8.8.8 #设置主DNS
GATEWAY0=192.168.9.1 #设置网关
DNS2=114.114.114.114 #设置备DNS
配置完静态IP后重启网络服务
systemctl restart network.service
ping www.baidu.com验证是否可以访问外网,能ping通百度说明配置完成。
过程如下(每一台服务器都要这样设置,这样服务器间才可以互相ping通)
2.1 配置hostname
vi /etc/hostname
NETWORKING=yes
HOSTNAME= ambari-1
2.2 配置hosts文件
[root@ambari-1 ~]# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.9.63 ambari-3
192.168.9.61 ambari-1
192.168.9.62 ambari-2
hostname和hosts改完之后,统一把所有机器重启一遍!让配置生效!
3.1 关闭防火墙
systemctl disable firewalld.service
systemctl stop firewalld.service
3.2. 关闭SElinux
[root@ambari-1 ~]# vi /etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# permissive - SELinux prints warnings instead of enforcing.
# enforcing - SELinux security policy is enforced.# disabled - No SELinux policy is loaded.
# targeted - Targeted processes are protected,
SELINUX=disabled# SELINUXTYPE= can take one of three two values:
# mls - Multi Level Security protection.
# minimum - Modification of targeted policy. Only selected processes are protected.
SELINUXTYPE=targeted
将SELINUX=enforcing改为SELINUX=disabled,执行该命令后重启机器生效
在Ambari Server节点执行如下命令:
ssh-keygen -t rsa (回车后再按连续三个回车)
cd .ssh/
cat id_rsa.pub >> authorized_keys
分别在其他三台机器上创建/root/.ssh目录,如下:
# mkdir /root/.ssh
然后将authorized_keys拷贝到其他两台机器的.ssh目录,如下:
scp authorized_keys ambari-2:/root/.ssh/
scp authorized_keys ambari-3:/root/.ssh/
验证配置:
[root@ambari-1 ~]# ssh ambari-1 date; ssh ambari-2 date; ssh ambari-3 date;
Thu Jun 14 06:10:20 EDT 2018Thu Jun 14 06:10:20 EDT 2018
Thu Jun 14 06:10:21 EDT 2018
改用阿里云镜像站点
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bkwget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache
ps:这个可以自己找一些其他的YUM源
其实也可以直接下载163或者阿里的源放到/etc/yum.repo.d 上
jdk安装相对简单很多,可以直接去官网下载,也可以直接去wget下载
$ mkdir /usr/local/src
$ wget http://download.oracle.com/otn-pub/java/jdk/8u112-b15/jdk-8u112-linux-x64.tar.gz?AuthParam=1480914946_a78f7ba2e70d2f0abed0b0af73c74214
$ mkdir -p /opt/java/ && tar xf jdk-8u112-linux-x64.tar.gz -C /opt/java
$ vim /etc/profile
添加下面内容:
export JAVA_HOME=/opt/java/jdk1.8.0_112
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
$ source /etc/profile #这样环境变量能马上生效
以ambari-1为ntp校准服务器
$ yum -y install ntp
$ systemctl is-enabled ntpd
$ systemctl enable ntpd
$ systemctl start ntpd
[root@ambari-1 ~]# vi /etc/ntp.conf
restrict 127.0.0.1
restrict -6 ::1
# Hosts on local network are less restricted.
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
restrict 192.168.10.0 mask 255.255.240.0 nomodify notrap //允许的网络字段连接ip限制
server 127.127.1.0 perfer //以本机时间为准fudge 127.127.1.0 stratum 10#server 0.centos.pool.ntp.org iburst //全部注释掉
#server 3.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
各个客户端(slave1,2,3,4,5)配置如下:
[root@ambari-2 ~]# vi /etc/ntp.conf
server ambari-1 //指定ntp 服务器,为ambari-1
#server 0.centos.pool.ntp.org iburst //全部注释掉
#server 1.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
启动全部节点ntp服务;
systemctl start ntpd.service
检查是否成功用“ntpstat”命令查看同步状态,出现以下状态代表启动成功
[root@ambari-1 ~]# ntpstat
synchronised to NTP server (192.168.9.1) at stratum 3
time correct to within 47 ms
polling server every 1024 s
ps:请求服务器前,请先使用ntpdate手动同步一下时间:ntpdate -umaster (主节点ntp服务器)这里可能出现同步失败的情况,请不要着急,一般是本地的ntp服务器还没有正常启动,一般需要等待5-10分钟才可以正常同步。启动服务:
systemctl start ntpd.service
这个操作比较简单,主要作用在为后期安装ambari制作本地源时候用的。
安装:yum install httpd
启动:systemctl start httpd.service
修改网站默认的根目录(一般都是默认var/www/html 所以不用改)
vi /etc/httpd/conf/httpd.conf
# DocumentRoot: Thedirectory out of which you will serve your
# documents. Bydefault, all requests are taken from this directory, but
# symbolic links andaliases may be used to point to other locations.
# This should bechanged to whatever you set DocumentRoot to.
#DocumentRoot"/var/www/html"#
#
mysql的安装浪费了大量的时间,尝试了很多种安装mysql5.7的方法。本文推荐使用RPM包方式安装方式。
7.1 卸载系统自带的 mysql和mariadb-lib
/bin/rpm -e $(/bin/rpm -qa | grep mysql|xargs) --nodeps
/bin/rpm -e $(/bin/rpm -qa | grep mariadb|xargs) --nodeps
2)下载mysql5.7.21 rpm安装包
下载地址:http://ftp.ntu.edu.tw/MySQL/Downloads/MySQL-5.7/
[root@ambari-1 ~]# wget http://ftp.ntu.edu.tw/MySQL/Downloads/MySQL-5.7/mysql-5.7.21-1.el7.x86_64.rpm-bundle.tar
[root@ambari-1 ~]# tar -vxf mysql-5.7.21-1.el7.x86_64.rpm-bundle.tar
依次执行(几个包有依赖关系,所以执行有先后)下面命令安装
[root@ambari-1 ~]# rpm -ivh mysql-community-common-5.7.21-1.el7.x86_64.rpm --force
[root@ambari-1 ~]# rpm -ivh mysql-community-libs-5.7.21-1.el7.x86_64.rpm --force
[root@ambari-1 ~]# rpm -ivh mysql-community-server-5.7.21-1.el7.x86_64.rpm --force
[root@ambari-1 ~]# rpm -ivh mysql-community-client-5.7.21-1.el7.x86_64.rpm --force
可能在安装mysql-community-server-5.7.21-1.el7.x86_64.rpm的时候会有如下报错:
[root@ambari-1 ~]# rpm -ivh mysql-community-server-5.7.21-1.el7.x86_64.rpm --force
warning: mysql-community-server-5.7.21-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
error: Failed dependencies: libaio.so.1()(64bit) is needed by mysql-community-server-5.7.21-1.el7.x86_64
libaio.so.1(LIBAIO_0.4)(64bit) is needed by mysql-community-server-5.7.21-1.el7.x86_64
libaio.so.1(LIBAIO_0.1)(64bit) is needed by mysql-community-server-5.7.21-1.el7.x86_64
net-tools is needed by mysql-community-server-5.7.21-1.el7.x86_64
这个报错的意思是需要安装libaio包和net-tools包:
安装libaio-0.3.107-10.el6.x86_64.rpm
[root@ambari-1 ~]# wget http://mirror.centos.org/centos/6/os/x86_64/Packages/libaio-0.3.107-10.el6.x86_64.rpm
[root@ambari-1 ~]# rpm -ivh libaio-0.3.107-10.el6.x86_64.rpm --force 安装net-tools
[root@ambari-1 ~]# yum install net-tools
使用rpm安装方式安装mysql,安装的路径如下:
数据库目录
var/lib/mysql/
配置文件
/usr/share/mysql(mysql.server命令及配置文件)
/etc/my.cnf
相关命令
/usr/bin(mysqladmin mysqldump等命令)
启动脚本
/etc/rc.d/init.d/(启动脚本文件mysql的目录)
7.3 数据库初始化
为了保证数据库目录为与文件的所有者为 mysql 登陆用户,如果你是以 root 身份运行 mysql 服务,需要执行下面的命令初始化
[root@ambari-1 ~]# mysql_install_db --datadir=/var/lib/mysql //必须指定datadir,执行后会生成~/.mysql_secret密码文件
[root@ambari-1 ~]# mysqld --initialize --user=mysql//新版的推荐此方法,执行生会在/var/log/mysqld.log生成随机密码。如果是以mysql身份运行,则可以去掉--user选项。
7.4 更改mysql数据库目录的所属用户及其所属组,然后启动mysql数据库
[root@ambari-1 ~]# chown mysql:mysql /var/lib/mysql -R
[root@ambari-1 ~]# systemctl start mysqld.service //启动mysql数据库服务
7.5 根据第7.3中的密码登录到mysql,更改root用户的密码
ps:新版的mysql在第一次登录后更改密码前是不能执行任何命令的
另外--initialize 选项默认以“安全”模式来初始化,则会为 root 用户生成一个密码并将该密码标记为过期,登陆后你需要设置一个新的密码,而使用--initialize-insecure命令则不使用安全模式,则不会为 root 用户生成一个密码。 这里演示使用的--initialize初始化的,会生成一个 root 账户密码,密码在log文件里,如下最后的")1r3gi,hjgQa"即为随即生成的root密码
[root@ambari-1 ~]# cat /var/log/mysqld.log
.......
07T04:41:58.420558Z 1 [Note] A temporary password is generated for root@localhost: )1r3gi,hjgQa
[root@ambari-1 ~]# mysql -uroot -p')1r3gi,hjgQa'mysql> set password=password('ambari-1@123');
mysql> flush privileges
当然,也可以不用随机密码。(不用密码登陆为mysql修改密码)
ps:本方法 与上面的方法任选一个就可以了
1.停止mysql服务
systemctl stop mysqld.service
2.修改配置文件无密码登录
vim /etc/my.cnf
最后加上:
“skip-grant-tables” 保存然后退出
3.启动mysql
systemctl start mysqld.service
4.登录mysql
mysql -u root ps:注意这里不要加-p
5.修改密码,mysql5.7用此语法
use mysql;
update mysql.user set authentication_string=password('123456') where user='root' ;
6.回到第2步部把刚加的那句删掉,然后保存,重启mysql就可以了
安装失败了,有点怀疑这个作用。
自己直接下载个jar包也可以,这样来回移动着方便
yum install mysql-connector-java -y
ps:我使用另一种方法直接下载压缩的jar包,放在/usr/share/java 下面
下班了,未完待续...
下一篇传送门: Ambari快速搭建大数据平台(二)