背景:
因为业务要求,需要在三台物理服务器上搭建大数据平台。经过多方查找资料,最终搭建成功。
鉴于 1)搭建过程中,出现很多小问题,解决起来花费大量的精力和时间
2)解决问题查找资料时候,多数资料都比较老了,并且不够系统
3)在物理服务器上搭建的资料较少,有必要进行补充
4)将解决过程分享给有类似业务需求的新手们,节省时间
出于上述考量,对本次操作过程做一个整理。后边还需要用Docer技术与Ambari的结合,有兴趣的小伙伴可以一起交流交流。
目录
8.安装nginx(存疑、我没有安装但是不影响后期正常使用)
Ambari 是什么
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) |
通过资料查询,发现需要很多准备工作要做。主要的时间浪费也是在这一部分。在查询文献资料过程中发现文献资料相互间说的都不太一样。本文尽可能多的准备了前期环境,进行分享。
1.配置静态IP、DNS
首先,进入到网卡,然后编辑。
[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通百度说明配置完成。
2.配置hostname
过程如下(每一台服务器都要这样设置,这样服务器间才可以互相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.关闭防火墙与SElinux
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,执行该命令后重启机器生效
4.SSH无密码登陆
在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
5. 修改YUM源
改用阿里云镜像站点
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 上
6.JDK1.8
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 #这样环境变量能马上生效
7.NTP时间同步
以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
6.安装HTTP服务器(后期要用的)
这个操作比较简单,主要作用在为后期安装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"#
#<Directory"/var/www/html">
7.安装mysql
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就可以了
8.安装nginx(存疑、我没有安装但是不影响后期正常使用)
安装失败了,有点怀疑这个作用。
9.安装mysql jdbc
自己直接下载个jar包也可以,这样来回移动着方便
yum install mysql-connector-java -y
ps:我使用另一种方法直接下载压缩的jar包,放在/usr/share/java 下面
下班了,未完待续...
下一篇传送门: Ambari快速搭建大数据平台(二)