接下来我将一步步讲解如何搭建此平台,主要是安装三个组件Hadoop、HBase、Hive,它们也是最基础的组件。下面我们开始吧!
一、机器安装(如果需要安装和本人一样的软件版本,通过QQ296095021取得联系)
在虚拟机上安装Centos7,选择最小安装,此台机器作为master,安装完成之后关机,接着是克隆刚刚创建的虚拟机,分别作为slave1和slave2。
安装Xshell和Xftp
Xshell的连接方法很简单,(通过ip来唯一标识主机,CentOS中查询ip的命令是ip addr或ifconfig)如果不会请自行查阅资料。这里可能存在一个坑,就是VMware没有安装正确,虚拟网卡没有启动,那么就需要重装VMware,直至有两个虚拟网络。
有些同志用的是笔记本电脑,换了地方连上网络之后,虚拟机的ip也会发生变化,为了之后的集群可以正常启动,这里我们需要设置静态ip。 如果要让IP地址永久生效,需要编辑网卡配置文件,#vi /etc/sysconfig/network-scripts/ifcfg-ens33
设置好之后,把网络服务重启一下,如下图#service network restart
三台机器都需要修改静态ip,所写的ip即为dhcp服务器刚开始分配的ip,我们的操作只是将其固定。(如果用的是台式机,一般情况下电脑不移动,可以省略这一步)
二、安装环境准备
1、配置hosts
主机名修改编辑/etc/hostname文件,之后需要重启机器#reboot,修改才能生效
编辑/etc/hosts文件,添加主机名和IP 映射关系,如图:(# hostname //查看主机名)
三台机器都是一样的操作,配置好后需要在各个节点上执行如下命令,测试是否相互 ping 得通,如果 ping 不通,后面就无法顺利配置成功:
#ping master -c 3 #只ping3次,否则要按 Ctrl+c 中断
#ping slave1 -c 3
#ping slave2 -c 3
2、配置SSH免密登录(为了节约搭建时间,不需要各个节点之间都免密登录)
这个操作是要让master节点可以无密码 SSH 登陆到各个slave节点上。
首先生成master 节点的公匙,在master 节点的终端中执行:
#cd ~/.ssh //如果没有该目录,先执行一次ssh localhost
#rm ./id_rsa* //删除之前生成的公匙(如果有)
#ssh-keygen -t rsa //一直按回车就可以
让master 节点需能无密码 SSH 本机,在master 节点上执行:
# cat ./id_rsa.pub >> ./authorized_keys
#chmod 600 ./authorized_keys #修改文件权限,这步很关键(本人在这里被坑了)
完成后可执行 ssh master验证一下(可能需要输入 yes,成功后执行 exit 返回原来的终端)。这里要特别说明的是,最好保证每个节点都能免密登录本地机器。
接着在master 节点将上公匙传输到slave1 节点:
# scp ~/.ssh/id_rsa.pub root@slave1:/root/
scp 是 secure copy 的简写,用于在 Linux 下进行远程拷贝文件,类似于 cp 命令,不过 cp 只能在本机中拷贝。执行 scp 时会要求输入slave1 上root用户的密码,输入完成后会提示传输完毕,如下图所示:
接着在slave1 节点上,将 ssh 公匙加入授权:
#mkdir ~/.ssh //如果不存在该文件夹需先创建,若已存在则忽略
#cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
#rm ~/id_rsa.pub //用完就可以删掉了
如果有其他 slave 节点,也要执行将 master 公匙传输到 slave 节点、在 slave 节点上加入授权这两步。
这样,在 master 节点上就可以无密码 SSH 到各个 slave 节点了,可在 master 节点上执行如下命令进行检验,如下图所示:
3、传输安装包
此时我们需要使用Xftp软件将Windows系统上的大数据所需软件安装包都传送到虚拟机中。
首先在master节点上创建software文件夹,如下图所示:
使用Xftp软件将安装包都传送到software文件夹内
选中文件后直接拖拽即可
此时master的software文件夹中就有了传送的安装包:
4、安装配置JDK
进入software文件夹内执行:
#tar -zxvf jdk-8u181-linux-x64.tar.gz //解压jdk安装包
#mv jdk1.8.0_181 jdk //重命名文件夹,方便之后配置环境变量时写文件路径
接着需要配置一下JAVA_HOME 环境变量,我们在/etc/profile中进行设置
在文件最前面添加如下两行(指向JDK 的安装位置),并保存:
接着还需要让该环境变量生效,执行如下代码:
# source /etc/profile #使变量设置生效
如果设置正确的话,$JAVA_HOME/bin/java -version 会输出 java 的版本信息,且和 java -version 的输出结果一样,如下图所示:
这样,Hadoop 所需的 Java 运行环境就安装好了。
三、配置Hadoop集群
1、解压Hadoop安装包并修改配置文件
#tar -zxvf hadoop-2.7.6.tar.gz
#mv hadoop-2.7.6 hadoop //重命名
编辑core-site.xml,添加如下内容(标签化语言在此篇文章中不能正常显示,所以就只能上传截图了)
编辑hdfs-site.xml,添加如下内容
编辑mapred-site.xml
编辑yarn-site.xml,添加
编辑slaves,添加子节点的主机名或IP
#vi slaves
编辑hadoop-env.sh,修改JAVA_HOME为本机实际的目录,如图
2、配置环境变量(在三台机器上都写一样的配置,如下)
#vi/etc/profile
#source /etc/profile
3、拷贝master节点上的jdk文件夹和hadoop文件夹到其他两个slave节点上
#scp -r /etc/profile slave1:/etc/profile
#source/etc/profile
#scp-r /root/software/jdk slave1:/root/software/jdk/
#scp-r /root/software/hadoop slave1:/root/software/hadoop/
slave节点都需要source /etc/profile
4、初始化hadoop集群
#hadoop namenode -format
成功的话,会看到 “successfully formatted” 和 “Exitting with
status 0” 的提示,若为 “Exitting with status 1” 则是出错。
5、启动Hadoop集群
首先进入/root/software/hadoop/sbin目录下,命令如下
#./start-dfs.sh
#./start-yarn.sh
验证启动结果:
如果实现上图,恭喜你,hadoop集群启动成功!!!(PS:已经成功一半了,接下来的安装会顺利一些)
三、配置HBase集群环境
1、查看Hadoop集群状态
我们在搭建好Hadoop集群之后就可以搭建HBase数据仓库了.在安装HBase之前检查Hadoop集群是否处于启动状态,如图
2、解压Hase、修改HBase的配置文件
进入/root/software目录,找到HBase安装包并解压、重命名,命令如下
#cd /root/software
#tar -zxvf hbase-1.1.5-bin.tar.gz
#mv hbase-1.1.5 hbase
进入/root/software/hbase/conf目录下,修改hbase-env.sh和hbase-site.xml
a.编辑hbase-site.xml文件
去掉注释符号,并修改为我们自己的JAVA_HOME
去掉前面的注释符号
b.编辑hbase-site.xml文件
c.配置环境变量(集群每台机器都要配置一下)
#vi /etc/profile
#source /etc/profile
d. 编辑regionservers,添加子节点的主机名或者IP地址
e.我们将修改好的HBase安装包拷贝包子节点上
#scp -r /root/software/hbase slave1:/root/software/hbase/
#scp -r /root/software/hbase slave2:/root/software/hbase/
3、启动HBase集群
#cd /root/software/hbase/bin
#./start-hbase.sh
验证集群的启动情况
四、配置Hive集群环境
Hive是基于Hadoop的一个数据仓库工具,其运行依赖Hadoop和Mysql,其中Hadoop为其提供Hdfs文件系统,Mysql为其提供元数据存储。下面我们开始搭建Hive。
1、Mysql安装
a.进入/root/software 目录下,解压Mysql安装包并重命名
#tar -zxvf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz
#mv mysql-5.7.18-linux-glibc2.5-x86_64 mysql
#mkdir -p ./mysql/data //mysql目录下生成data目录
b.# touch my.cnf //在software文件夹下创建mycnf文件,里面添加内容如下:
[mysqld]
basedir=/root/software/mysql
datadir=/root/software/mysql/data
socket=/tmp/mysql.sock
lower_case_table_names=1
user=root
character-set-server=utf8
symbolic-links=0
[client]
default-character-set=utf8
[mysqld-safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
# cp my.cnf /etc/ //覆盖/etc下原有的my.cnf
c. 初始化数据库
#/root/software/mysql/bin/mysqld --initialize-insecure --basedir=/root/software/mysql --datadir=/root/software/mysql/data --user=root
# cp /root/software/mysql/support-files/mysql.server /etc/init.d/mysql //将mysql加入服务
# chkconfig mysql on //设置mysql开机自启
# service mysql start //启动mysql服务
d. 配置mysql环境变量
#vi /etc/profile //配置环境变量
#suorce /etc/profile
#mysql -uroot -p //登录mysql,密码为空直接回车
mysql>setpassword=password('123456'); //在mysql登录进去后更改密码
mysql>create database hive default charset utf8; //创建hive数据库
mysql>grantall privileges on *.* to 'root'@'%' identified by '123456'; //赋权限
mysql>flush privileges; //刷新权限
mysql> exit //退出mysql
2、Hive搭建
a.解压安装包
# tar -zxvf apache-hive-2.2.0-bin.tar.gz
b.重命名
# mv apache-hive-2.2.0-bin hive
c.添加环境变量
# vi /etc/profile
# source /etc/profile
d. 修改配置文件
根据环境部署的需求,修改主节点上的hive配置文件:hive-env.sh和hive-site.xml,完成配置后,启动hive服务。
修改hive-env.sh文件
# cd /root/software/hive/conf/ //进入hive的conf目录
# cp hive-env.sh.template hive-env.sh //重新命名
# vi hive-env.sh //修改hadoop的安装目录
修改hive-site.xml文件
# cp hive-default.xml.template hive-site.xml //重新命名
# vi hive-site.xml //编辑hive-site.xml
进入vi编辑器后输入:/加上想要搜索的字符串即可快速定位,这里我用name标签
3、我们将修改好的Hive安装包拷贝包子节点上
# scp -r /root/software/hiveslave1:/root/software //将hive传到子节点
# scp -r /root/software/hiveslave2:/root/software
# scp -r /etc/profile slave1:/etc/profile
# source /etc/profile //环境变量生效,子主节点都要执行
# cp -r /root/software/mysql-connector-java-5.1.40-bin.jar /root/software/hive/lib/ //将mysql jar包 拷贝到/hive/lib中
# cp -r /root/software/hive/lib/jline-2.12.jar /root/software/hadoop/share/hadoop/yarn/lib //将jline包拷贝到hadoop中
4、启动测试hive
在hive/bin目录下执行:
# schematool -dbType mysql -initSchema //初始化元数据
启动hadoop后,执行hive命令
#hive
测试输入 show database;