Centos7的安装与模板机的制作
1.安装环境准备
1.VMware Workstation
2.centos7镜像
本文用的VMware版本为16.2.1 build-18811642
2.开始安装
话不多说,直接上图
3.模板机制作
1.查看防火墙的运行状态
firewall-cmd --state
防火墙目前正在启动中
2.关闭防火墙
(1)临时关闭
systemctl stop firewalld.service
(2)永久关闭
systemctl disable firewalld.service
仅仅关闭此防火墙是不够的,还要关闭内核防火墙
查看内核防火墙的状态
getenforce
临时关闭内核防火墙
setenforce 0
永久关闭的方式
vi /etc/selinux/config
将SELINUX=enforcing中的enforcing修改为disabled
如下图所示
此时两套防火墙均关闭,重启一下虚拟机。
reboot -h now
3.配置静态ip
切换目录到网络配置目录
cd /etc/sysconfig/network-scripts
查看一下都有什么文件
配置静态ip需要点击编辑->虚拟网络编辑器
打开可以查看可以分配的起始ip地址与结束的ip地址
分配ip的时候要在这个范围之内
vi ifcfg-ens33
将文件内容改为以下内容
ip地址根据自己的ip来选择,网关也是根据自己的情况来写
保存退出后重启网卡文件
service network restart
查看是否为我们配置的ip地址
ip addr
配置成功,下面检查一下是否可以连接外网
curl www.baidu.com
出现此处画面说明配置成功,模板机也制作完成
4.用模板机制作主节点
1.远程登录虚拟机
本文使用SecureCRT来连接虚拟机
使用方式直接看图
2.上传文件
可以使用上传工具上传文件,由于安装的是最小化安装,并没有这个工具,可以先安装一下
yum -y install lrzsz
安装完毕
上传命令
rz
然后敲回车,此时会打开文件目录
选择要上传的文件,点击打开,等候上传成功即可
可以看到已经上传过来了
3.安装jdk
首先切换到文件所存放的位置
cd /usr/local/src
执行解压缩命令
tar -zxvf jdk-8u172-linux-x64.tar.gz
配置环境变量
1./root/.bashrc
2./etc/profile
两个位置的都可以,第一个是全局变量,当机器开机启动后配置就会生效,第二个是当用户登录之后生效
选择第一种配置方式
当前jdk的位置
/usr/local/src/jdk1.8.0_172
vi /root/.bashrc
加入以下内容
export JAVA_HOME=/usr/local/src/jdk1.8.0_172
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
刷新一下环境变量
source /root/.bashrc
jdk到此安装结束
4.安装hadoop
上传hadoop的压缩包
解压缩hadoop
tar -zxvf hadoop-2.6.1.tar.gz
删除一些文件,替换为以下几个文件
rm -rf hdfs-site.xml core-site.xml slaves yarn-site.xml
接下来上传以下文件
链接:https://pan.baidu.com/s/1tbyLjrWXSNpRn5GoxdjFSg?pwd=8tqw
提取码:8tqw
–来自百度网盘超级会员V5的分享
5.vim的安装
yum -y install vim
6.配置其他的环境
vim hadoop-env.sh
替换成路径
vim yarn-env.sh
export JAVA_HOME=/usr/local/src/jdk1.8.0_172
将该语句加入到文件中
创建一些文件夹
cd /usr/local/src/hadoop-2.6.1
mkdir -p dfs/data
mkdir -p dfs/name
mkdir tmp
vim /root/.bashrc
添加以下内容
# set hadoop environment
export HADOOP_HOME=/usr/local/src/hadoop-2.6.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
刷新一下
source /root/.bashrc
环境配置完毕
4.克隆虚拟机
1.首先先把虚拟机关机
点击虚拟机—>管理–>克隆
用同样的方式克隆出slave2
2.接下来打开虚拟机修改ip地址
cd /etc/sysconfig/network-scripts
vim ifcfg-ens33
只改ip地址即可,修改完成后重新启动网络服务
/etc/init.d/network restart
出现此场景说明是正常的,用同样的方式去修改slave2
5.修改hostname
1.修改hostname:
格式:hostnamectl set-hostname 机器名称
命令:hostnamectl set-hostname master
hostnamectl set-hostname master
hostnamectl set-hostname slave1
hostnamectl set-hostname slave2
分别在对应节点执行三条命令
2.下面做一下ip映射关系
vim /etc/hosts
192.168.109.130 master
192.168.109.131 slave1
192.168.109.132 slave2
加入要配置的映射关系
3.远程将修改的文件拷贝给两台slave
scp -r /etc/hosts root@slave1:/etc/
scp -r /etc/hosts root@slave2:/etc/
重启三台虚拟机
6.建立互信关系
1.master节点上
ssh-keygen -t rsa -P ''
输入完成后执行,然后按回车
另外两个节点也执行一下
2.进入以下目录
cd /root/.ssh/
3.接下来执行下方的命令
ssh slave1 cat /root/.ssh/id_rsa.pub >>authorized_keys
ssh slave2 cat /root/.ssh/id_rsa.pub >>authorized_keys
cat id_rsa.pub >>authorized_keys
4.将该文件分发给另外两个机器
scp -r authorized_keys slave1:`pwd`
scp -r authorized_keys slave2:`pwd`
5.验证一下是否互信成功
登录时不需要输入密码,成功
7.hadoop集群搭建
1.格式化hadoop集群
1)在哪个节点格式化,哪个节点就是主节点
在master节点格式化
hadoop namenode -format
2)启动集群
cd $HADOOP_HOME
sbin/start-all.sh
3)检查集群是否正常
检查进程是否正常
master(主节点)节点
[root@master hadoop-2.6.1]# jps
1907 Jps
1653 ResourceManager
1354 NameNode
1519 SecondaryNameNode
slave1(子节点)
[root@slave1 ~]# jps
1232 DataNode
1417 Jps
1322 NodeManager
slave2(子节点)
[root@slave2 ~]# jps
1478 NodeManager
1575 Jps
1388 DataNode
master(主节点)上执行命令
hadoop dfsadmin -report
出现这样的情况说明是正常的,下面进一步验证。
hadoop fs -put README.txt /
将此文件上传至hdfs上,接下来查看一下
hadoop fs -ls /
4)关闭集群
sbin/stop-all.sh
执行完之后分别在三台机器上执行jps命令
hadoop集群搭建完成
2.web界面浏览
为了可以在网页浏览,需要在主节点启动历史任务
cd /usr/local/src/hadoop-2.6.1/sbin
./mr-jobhistory-daemon.sh start historyserver
jps
此时jps之后
[root@master sbin]# jps
3537 JobHistoryServer
3683 NameNode
4279 Jps
3996 ResourceManager
3854 SecondaryNameNode
JobHistoryServer进程会记录执行任务的日志
在浏览器输入ip地址加上8088端口即可查看hadoop的GUI界面
下面修改本机hosts文件
位置为:C:\Windows\System32\drivers\etc
修改hosts文件
添加内容:
虚拟机各个节点的ip地址和hostname
中间空格分开
这样就可以用hostname来访问了
8.mysql的安装
1.检查是否安装了数据库
rpm -qa | grep mysql
rpm -qa | grep mariadb
此时说明已经有mariadb,要先把它卸载掉
2.卸载
yum -y remove mariadb-libs-5.5.56-2.el7.x86_64
卸载完毕
3.安装wget
yum -y install wget
4.下载 mysql57-community-release-el7-9.noarch.rpm 的yum源:
wget http://mirrors.ustc.edu.cn/mysql-repo/mysql57-community-release-el7-9.noarch.rpm
5.安装rpm文件:
rpm -ivh mysql57-community-release-el7-9.noarch.rpm
6.yum安装mysql-community-server
yum -y install mysql-community-server --nogpgcheck
7.关闭强密码验证
vim /etc/my.cnf
#增加以下内容
plugin-load=validate_password.so
validate-password=OFF
8.启动mysql服务
service mysqld start
9.获取临时生成的密码
grep "password" /var/log/mysqld.log
10.登录mysql
mysql -u root -p
将密码输入,回车
11.更改密码
SET PASSWORD = PASSWORD('123456');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
flush privileges;
12查询用户表:
mysql> use mysql
mysql> select User,authentication_string,Host from user;
13.设置任意IP访问:
mysql> grant all privileges on *.* to root@"%" identified by "123456";
mysql> grant all privileges on *.* to root@"master" identified by "123456";
mysql> flush privileges;
退出mysql:exit 设置开机启动mysql服务:systemctl enable mysqld
14.重新登录mysql
mysql -u root -p
输入密码123456
use mysql
select User,authentication_string,Host from user;
可以看到下边多了两行,此时设置完毕
9.Hive的安装
1.下载软件包
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-1.2.2/apache-hive-1.2.2-bin.tar.gz
下边加入后边的参数
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-1.2.2/apache-hive-1.2.2-bin.tar.gz --no-check-certificate
2.解压
tar -zxvf apache-hive-1.2.2-bin.tar.gz
移动目录
mv apache-hive-1.2.2-bin /usr/local/src/
切换目录
cd /usr/local/src/apache-hive-1.2.2-bin/conf
3.修改配置文件
修改hive运行环境配置文件:hive-env.sh
mv hive-env.sh.template hive-env.sh
vim hive-env.sh
添加如下内容
export JAVA_HOME=/usr/local/src/jdk1.8.0_172
export HADOOP_HOME=/usr/local/src/hadoop-2.6.1
export HIVE_HOME=/usr/local/src/apache-hive-1.2.2-bin
export HIVE_CONF_DIR=/usr/local/src/apache-hive-1.2.2-bin/conf
创建hive-site.xml文件
touch hive-site.xml
vim hive-site.xml
添加如下内容
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>hdfs://master:9000/hive/warehouse</value>
</property>
<property>
<name>hive.exec.scratchdir</name>
<value>hdfs://master:9000/hive/tmp</value>
</property>
<property>
<name>hive.querylog.location</name>
<value>/usr/hive/log</value>
<description>设置hive job日志存储位置</description>
</property>
<property>
<name>hive.cli.print.header</name>
<value>true</value>
<description>设置列名</description>
</property>
<property>
<name>hive.resultset.use.unique.column.names</name>
<value>false</value>
<description>增加列名可读性</description>
</property>
<!-- flume to hive test-->
<property>
<name>hive.support.concurrency</name>
<value>true</value>
<description>是否支持并发,默认是false</description>
</property>
<!--
<property>
<name>hive.txn.manager</name>
<value>org.apache.hadoop.hive.ql.lockmgr.DbTxnManager</value>
<description>打开一部分事务支持协同配置</description>
</property>
-->
<property>
<name>hive.compactor.initiator.on</name>
<value>true</value>
<description>运行启动程序和清除线程,用于打开所需参数的完整列表事务</description>
</property>
<property>
<name>hive.compactor.worker.threads</name>
<value>1</value>
<description>增加工作线程的数量将减少花费的时间</description>
</property>
<property>
<name>hive.enforce.bucketing</name>
<value>true</value>
<description>是否启用bucketing,写入table数据</description>
</property>
<property>
<name>hive.exec.dynamic.partition.mode</name>
<value>nonstrict</value>
<description>设置动态分区模式为非严格模式</description>
</property>
</configuration>
4.添加环境变量
master节点
vim ~/.bashrc
export HIVE_HOME=/usr/local/src/apache-hive-1.2.2-bin
export PATH=$PATH:${HIVE_HOME}/bin
刷新一下环境变量,让配置生效:
source ~/.bashrc
5.安装mysql的连接工具
wget https://cdn.mysql.com/archives/mysql-connector-java-5.1/mysql-connector-java-5.1.45.tar.gz
解压
tar -zxvf mysql-connector-java-5.1.45.tar.gz
cd mysql-connector-java-5.1.45
cp mysql-connector-java-5.1.45-bin.jar $HIVE_HOME/lib/
查看是否复制过来
cd $HIVE_HOME
ls lib/mysql-connector-java-5.1.45-bin.jar
6.启动hive
# 启动hive之前先启动hadoop
hive 是依赖hadoop中的hdfs作为存储,依赖mysql管理元数据
hadoop集群启动之后,需要等待一会,等待hadoop退出安全模式,
退出之后才可以启动hive
1.启动hadoop
cd /usr/local/src/hadoop-2.6.1
sbin/start-all.sh
2.检查
hadoop dfsadmin -report
3.进入hive目录
cd /usr/local/src
ls -ll
修改用户和用户组,改为root
先关闭hadoop
cd hadoop-2.6.1
sbin/stop-all.sh
cd /usr/local/src
修改用户和用户组
ll
chown -R root:root hadoop-2.6.1 jdk1.8.0_172
两个slave节点也改一下
接下来重新启动hadoop
cd /usr/local/src/hadoop-2.6.1
sbin/start-all.sh
再次检查是否在安全模式
hadoop dfsadmin -report
可以看到并没有处于安全模式
4.启动hive
cd /usr/local/src/apache-hive-1.2.2-bin/bin
./hive
执行过程中出现了错误,下面来修改
首先删除hadoop中的旧版本的jline-0.9.94.jar
所在目录
$HADOOP_HOME/share/hadoop/yarn/lib/jline-0.9.94.jar
删除操作
rm $HADOOP_HOME/share/hadoop/yarn/lib/jline-0.9.94.jar
复制hive中的jline-2.12.jar到hadoop中
cd /usr/local/src/apache-hive-1.2.2-bin
cp lib/jline-2.12.jar $HADOOP_HOME/share/hadoop/yarn/lib/
然后启动hive
cd conf/
hive
show databases;
此时发现hive执行的比较慢,我们下面修改一下,提升hive执行速度
cd /usr/local/src/apache-hive-1.2.2-bin/conf
vim hive-site.xml
将下边内容注释掉
<!-- flume to hive test>
<property>
<name>hive.support.concurrency</name>
<value>true</value>
<description>是否支持并发,默认是false</description>
</property>
<property>
<name>hive.txn.manager</name>
<value>org.apache.hadoop.hive.ql.lockmgr.DbTxnManager</value>
<description>打开一部分事务支持协同配置</description>
</property>
<property>
<name>hive.compactor.initiator.on</name>
<value>true</value>
<description>运行启动程序和清除线程,用于打开所需参数的完整列表事务</description>
</property>
<property>
<name>hive.compactor.worker.threads</name>
<value>1</value>
<description>增加工作线程的数量将减少花费的时间</description>
</property>
<property>
<name>hive.enforce.bucketing</name>
<value>true</value>
<description>是否启用bucketing,写入table数据</description>
</property>
<property>
<name>hive.exec.dynamic.partition.mode</name>
<value>nonstrict</value>
<description>设置动态分区模式为非严格模式</description>
</property>
-->
此时执行hive的时候就变快了