zookeeper集群安装
1)使用VMware加载资料中虚拟机node1
2)克隆第二台虚拟机,注意克隆虚拟机的时候,虚拟机必须是关闭状态
右键点击node1
下一步
下一步
创建完整克隆,下一步
指定虚拟机名字和存放位置,三台虚拟机的存放路径尽量在一起,不在一起也没关系
等待克隆完毕
关闭
2)克隆第三台虚拟机,通过node1虚拟机克隆,克隆方式是一样的,注意修改虚拟机的名称和存放位置。
2.设置三台虚拟机的内存和CPU核数设置
三台虚拟机再加上windows本身, 需要同时运行4台机器, 所以在分配的时候, 每台虚拟机的内存为: 总内存 ÷ 4,比如电脑总内存为16G,则每台虚拟机内存为4G。
下面是以node1为例对内存进行配置:
CPU核数, 建议每个服务器设置为2核即可, 保证能够更加流畅运行
3.配置MAC地址
node2和node3都是从node1克隆过来的,他们的MAC地址都一样,所以需要让node2和node3重新生成MAC地址,生成方式如下:
1、配置node2的MAC地址
1)使用VMware打开node2
2)右键点击node2,选择设置
3)生成新的MAC地址
2、配置node3的MAC地址
node3的配置方式和node2相同,不再重复
4.配置IP地址
三台虚拟机的IP地址配置如下:
node1: 192.168.88.161
node2 192.168.88.162
node3: 192.168.88.163
1:配置node1主机IP
1)修改ip配置文件,设置IP地址
vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=“Ethernet”
PROXY_METHOD=“none”
BROWSER_ONLY=“no”
BOOTPROTO=“static”
DEFROUTE=“yes”
IPV4_FAILURE_FATAL=“no”
IPV6INIT=“yes”
IPV6_AUTOCONF=“yes”
IPV6_DEFROUTE=“yes”
IPV6_FAILURE_FATAL=“no”
IPV6_ADDR_GEN_MODE=“stable-privacy”
NAME=“ens33”
UUID=“dfd8991d-799e-46b2-aaf0-ed2c95098d58”
DEVICE=“ens33”
ONBOOT=“yes”
IPADDR=“192.168.88.161”
PREFIX=“24”
GATEWAY=“192.168.88.2”
NETMASK=“255.255.255.0”
DNS1=“8.8.8.8”
DNS2=“114.114.114.114”
IPV6_PRIVACY=“no”
2)重启网络服务
systemctl restart network # 重启网络服务
3)查看ip地址
ifconfig
4)测试网络连接
ping www.baidu.com
2:配置node2主机IP
4)修改ip配置文件,设置IP地址
vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=“Ethernet”
PROXY_METHOD=“none”
BROWSER_ONLY=“no”
BOOTPROTO=“static”
DEFROUTE=“yes”
IPV4_FAILURE_FATAL=“no”
IPV6INIT=“yes”
IPV6_AUTOCONF=“yes”
IPV6_DEFROUTE=“yes”
IPV6_FAILURE_FATAL=“no”
IPV6_ADDR_GEN_MODE=“stable-privacy”
NAME=“ens33”
UUID=“dfd8991d-799e-46b2-aaf0-ed2c95098d58”
DEVICE=“ens33”
ONBOOT=“yes”
IPADDR=“192.168.88.162”
PREFIX=“24”
GATEWAY=“192.168.88.2”
NETMASK=“255.255.255.0”
DNS1=“8.8.8.8”
DNS2=“114.114.114.114”
IPV6_PRIVACY=“no”
5)重启网络服务
systemctl restart network # 重启网络服务
6)查看ip地址
ifconfig
5)测试网络连接
ping www.baidu.com
2:配置node3主机IP
node3主机IP的配置方式和node2一样,将其IP地址设置为:192.168.88.163,在这里不再重复。
TYPE=“Ethernet”
PROXY_METHOD=“none”
BROWSER_ONLY=“no”
BOOTPROTO=“static”
DEFROUTE=“yes”
IPV4_FAILURE_FATAL=“no”
IPV6INIT=“yes”
IPV6_AUTOCONF=“yes”
IPV6_DEFROUTE=“yes”
IPV6_FAILURE_FATAL=“no”
IPV6_ADDR_GEN_MODE=“stable-privacy”
NAME=“ens33”
UUID=“dfd8991d-799e-46b2-aaf0-ed2c95098d58”
DEVICE=“ens33”
ONBOOT=“yes”
IPADDR=“192.168.88.163”
PREFIX=“24”
GATEWAY=“192.168.88.2”
NETMASK=“255.255.255.0”
DNS1=“8.8.8.8”
DNS2=“114.114.114.114”
IPV6_PRIVACY=“no”
5.使用CRT连接三台虚拟机
1、建立连接
2、参数配置
3、设置主题,颜色和仿真
其他两台基本类似
6.设置主机名和域名映射
1、配置每台虚拟机主机名:
分别编辑每台虚拟机的hostname文件,直接填写主机名,保存退出即可。
vim /etc/hostname
第一台主机主机名为:node1.itcast.cn
第二台主机主机名为: node2.itcast.cn
第三台主机主机名为: node3.itcast.cn
2、配置每台虚拟机域名映射
分别编辑每台虚拟机的hosts文件,在原有内容的基础上,填下以下内容:
注意:不要修改文件原来的内容,三台虚拟机的配置内容都一样。
vim /etc/hosts
192.168.88.161 node1 node1.itcast.cn
192.168.88.162 node2 node2.itcast.cn
192.168.88.163 node3 node3.itcast.cn
配置后效果如下:
7.关闭三台虚拟机的防火墙和Selinux
1、关闭每台虚拟机的防火墙
在每台虚拟机上分别执行以下指令:
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
关闭之后,查看防火墙状态:
systemctl status firewalld.service
2、关闭每台虚拟机的Selinux
1)什么是SELinux ?
1)SELinux是Linux的一种安全子系统
2)Linux中的权限管理是针对于文件的, 而不是针对进程的, 也就是说, 如果root启动了某个进程, 则这个进程可以操作任何一个文件。
3)SELinux在Linux的文件权限之外, 增加了对进程的限制, 进程只能在进程允许的范围内操作资源
2)为什么要关闭SELinux
如果开启了SELinux, 需要做非常复杂的配置, 才能正常使用系统, 在学习阶段, 在非生产环境, 一般不使用SELinux
SELinux的工作模式:
enforcing 强制模式
permissive 宽容模式
disabled 关闭
7)关闭SELinux方式
编辑每台虚拟机的Selinux的配置文件
vim /etc/selinux/config
Selinux的默认工作模式是强制模式,配置如下:
将Selinux工作模式关闭:
8)分别重启三台虚拟机
reboot
8.三台机器机器免密码登录
1、为什么要免密登录
Hadoop 节点众多, 所以一般在主节点启动从节点, 这个时候就需要程序自动在主节点登录到从节点中, 如果不能免密就每次都要输入密码, 非常麻烦。
2、免密 SSH 登录的原理
- 需要先在 B节点 配置 A节点 的公钥
- A节点 请求 B节点 要求登录
- B节点 使用 A节点 的公钥, 加密一段随机文本
- A节点 使用私钥解密, 并发回给 B节点
- B节点 验证文本是否正确
3、实现步骤
第一步:三台机器生成公钥与私钥
在三台机器执行以下命令,生成公钥与私钥
ssh-keygen -t rsa
执行该命令之后,按下三个回车即可,然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥),默认保存在/root/.ssh目录。
第二步:拷贝公钥到同一台机器
三台机器将拷贝公钥到第一台机器
三台机器执行命令:
ssh-copy-id node1
在执行该命令之后,需要输入yes和node1的密码:
第三步:复制第一台机器的认证到其他机器
将第一台机器的公钥拷贝到其他机器上
在第一台机器上指行以下命令
scp /root/.ssh/authorized_keys node2:/root/.ssh
scp /root/.ssh/authorized_keys node3:/root/.ssh
执行命令时,需要输入yes和对方的密码
第三步:测试SSH免密登录
可以在任何一台主机上通过ssh 主机名命令去远程登录到该主机,输入exit退出登录
例如:在node1机器上,免密登录到node2机器上
ssh node1
exit
执行效果如下:
9.三台机器时钟同步
为什么需要时间同步
因为很多分布式系统是有状态的, 比如说存储一个数据, A节点 记录的时间是1, B节点 记录的时间是2, 就会出问题
时钟同步方式
方式一:通过网络进行时钟同步
通过网络连接外网进行时钟同步,必须保证虚拟机连上外网
1、启动定时任务
crontab -e
随后在输入界面键入以下内容,每隔一分钟就去连接阿里云时间同步服务器,进行时钟同步
*/1 * * * * /usr/sbin/ntpdate -u ntp4.aliyun.com;
方式二:通过某一台机器进行同步
以192.168.88.161这台服务器的时间为准进行时钟同步
9.1.第一步:在node1虚拟机安装ntp并启动
安装ntp服务
yum -y install ntp
启动ntp服务
systemctl start ntpd
设置ntpd的服务开机启动
#关闭chrony,Chrony是NTP的另一种实现
systemctl disable chrony
#设置ntp服务为开机启动
systemctl enable ntpd
9.2.第二步:编辑node1的/etc/ntp.conf文件
编辑node1机器的/etc/ntp.conf
vim /etc/ntp.conf
在文件中添加如下内容(授权192.168.88.0-192.168.88.255网段上的所有机器可以从这台机器上查询和同步时间)
restrict 192.168.88.0 mask 255.255.255.0 nomodify notrap
注释一下四行内容:(集群在局域网中,不使用其他互联网上的时间)
#server 0.centos.pool.ntp.org
#server 1.centos.pool.ntp.org
#server 2.centos.pool.ntp.org
#server 3.centos.pool.ntp.org
去掉以下内容的注释,如果没有这两行注释,那就自己添加上(当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步)
server 127.127.1.0
fudge 127.127.1.0 stratum 10
配置以下内容,保证BIOS与系统时间同步
vim /etc/sysconfig/ntpd
添加一行内容
SYNC_HWLOCK=yes
重启ntp服务
systemctl restart ntpd
9.3.第三步:另外两台机器与第一台机器时间同步
另外两台机器与192.168.88.161进行时钟同步,在node2和node3机器上分别进行以下操作
crontab -e
添加以下内容:(每隔一分钟与node1进行时钟同步)
*/1 * * * * /usr/sbin/ntpdate 192.168.88.161
10.虚拟机软件安装
10.1.Linux上安装MySQL(node1)
注:需要连接互联网,在线 mysql 的安装包,5.6 的版本大约 86M , 仅需在node1安装即可
10.1.1.MySQL在线下载安装
- 查看 CentOS 是否自带的 MySQL,如果已经安装需要卸载。如果没有找到,则表示没有安装。
如果查询到有内容: 使用 rpm -e --nodeps 要卸载名称
例如:
rpm -e --nodeps mysql-libs-5.1.73-8.el6_8.x86_64
2) 在线获取 CentOS7 的 mysql 的 rpm 安装文件,直接执行如下命令:
wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
这条语句只是下载了一个 rpm 文件,25K 大小
- 执行安装命令:
rpm -ivh mysql80-community-release-el7-1.noarch.rpm - 得到两个配置文件,在/etc/yum.repos.d 目录下。
4.1) mysql-community.repo 用于指定下载哪个版本的安装包
4.2) mysql-community-source.repo 用于指定下载哪个版本的源码 - 修改 MySQL 的下载配置文件
进入目录命令:
cd /etc/yum.repos.d
编辑配置文件命令:
vim mysql-community.repo
我们下载 MySQL 5.6,把 5.6 下的 enabled 设置为 1,表示下载。
把 MySQL8 的下载关闭,将 enabled 设置为 0
保存修改退出。
6) 在当前目录/etc/yum.repos.d 下执行下面的命令,开始在线下载:客户端,服务器端,开发的工具包。
在线下载安装命令介绍:yum(全称为 Yellow dog Updater, Modified)
作用:用于自动从服务器上下载相应 的软件包,自动安装,并且自动下载它的依赖包。
yum( Yellow dog Updater, Modified)是一个基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且 安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
语法说明
进行在线下载安装 mysql 命令
yum -y install mysql-community-client mysql-community-server mysql-community-devel
这里需要比较长的时间,要从互联网上下载 86M 左右的内容
- 使用 rpm 命令,可以查询到 mysql 已经安装好的包
10.1.2. 启动MySQL服务并登陆
- 启动 mysql 的服务
systemctl start mysqld - 将 mysql 加到系统服务中并设置开机启动
systemctl enable mysqld - 登录 mysql,root 用户默认没有密码
mysql -uroot - 在 mysql 中修改自己的密码 : 此处设置为 123456
set password = password(‘123456’);
10.1.3. 设置远程访问权限
- 开启 mysql 的远程登录权限,默认情况下 mysql 为安全起见,不支持远程登录 mysql,所以需要设置开启,并且刷新权限缓存。远程登录 mysql 的权限登录 mysql 后输入如下命令:
grant all privileges on . to ‘root’@‘%’ identified by ‘123456’;
flush privileges;
2)确保防火墙已关闭
10.1.4. 客户端windows连接linux中mysql
到此mysql安装全部结束
注意:如果希望删除卸载 mysql 执行如下命令
yum -y remove mysql-community-client mysql-community-server mysql-community-devel
10.2. JDK安装(所有节点安装)
JDK 是个绿色软件,解压并且配置环境变量即可使用, 三个节点都需要安装的
10.2.1. JDK安装步骤
- 在虚拟机中创建两个目录
mkdir -p /export/software 软件包放置的目录
mkdir -p /export/server 软件安装的目录 - 进入 /export/software 目录, 上传jdk的安装包: jdk-8u241-linux-x64.tar.gz
- 解压压缩包到/export/server目录下
tar -zxvf jdk-8u241-linux-x64.tar.gz -C /export/server
查看解压后的目录,目录中有 jdk1.8.0_144 为 jdk 解压的目录 - 配置 jdk 环境变量,打开/etc/profile 配置文件,将下面配置拷贝进去。export 命令用于将 shell 变量输出为环境变量
第一步: vi /etc/profile
第二步: 通过键盘上下键 将光标拉倒最后面
第三步: 然后输入 i, 将一下内容输入即可
#set java environment
JAVA_HOME=/export/server/jdk1.8.0_241
CLASSPATH=.:JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
第四步: esc键 然后 :wq 保存退出即可
5)重新加载环境变量:
source /etc/profile
6)配置jdk是否安装成功
java -version
- 将jdk分发给node2和node3
cd /export/server/
scp -r jdk1.8.0_241/ node2:PWD - 在node2和node3配置jdk的环境变量
scp -r /etc/profile node2:/etc/
scp -r /etc/profile node3:/etc/
分别在node2和node3重新加载环境变量
source /etc/profile
9) 测试node2和node3 是否安装成功
Hadoop集群安装
hadoop集群搭建
- 上传重编译后的hadoop包并解压
cd /export/software/
rz 上传
解压操作
tar -zxvf hadoop-3.3.0-Centos7-64-with-snappy.tar.gz -C /export/server/
添加软连接:
cd /export/server/
ln -s hadoop-3.3.0/ hadoop
- Hadoop安装包目录结构
解压hadoop-3.3.0-Centos7-64-with-snappy.tar.gz,目录结构如下:
bin:Hadoop最基本的管理脚本和使用脚本的目录,这些脚本是sbin目录下管理脚本的基础实现,用户可以直接使用这些脚本管理和使用Hadoop。
etc:Hadoop配置文件所在的目录,包括core-site,xml、hdfs-site.xml、mapred-site.xml等从Hadoop1.0继承而来的配置文件和yarn-site.xml等Hadoop2.0新增的配置文件。
include:对外提供的编程库头文件(具体动态库和静态库在lib目录中),这些头文件均是用C++定义的,通常用于C++程序访问HDFS或者编写MapReduce程序。
lib:该目录包含了Hadoop对外提供的编程动态库和静态库,与include目录中的头文件结合使用。
libexec:各个服务对用的shell配置文件所在的目录,可用于配置日志输出、启动参数(比如JVM参数)等基本信息。
sbin:Hadoop管理脚本所在的目录,主要包含HDFS和YARN中各类服务的启动/关闭脚本。
share:Hadoop各个模块编译后的jar包所在的目录,官方自带示例。 - Hadoop配置文件修改
Hadoop安装主要就是配置文件的修改,一般在主节点进行修改,完毕后scp下发给其他各个从节点机器。
3.1 hadoop-env.sh
文件中设置的是Hadoop运行时需要的环境变量。JAVA_HOME是必须设置的,即使我们当前的系统中设置了JAVA_HOME,它也是不认识的,因为Hadoop即使是在本机上执行,它也是把当前的执行环境当成远程服务器。
cd /export/server/hadoop/etc/hadoop/
vim hadoop-env.sh
添加: 在54行
export JAVA_HOME=/export/server/jdk1.8.0_241/
#文件最后添加: 在第 439行下
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
3.2 core-site.xml
hadoop的核心配置文件,有默认的配置项core-default.xml。
core-default.xml与core-site.xml的功能是一样的,如果在core-site.xml里没有配置的属性,则会自动会获取core-default.xml里的相同属性的值。
cd /export/server/hadoop/etc/hadoop/
vim core-site.xml
在文件的configuration的标签中添加以下内容:
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1.itcast.cn:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/export/data/hadoop</value>
</property>
<!-- 设置HDFS web UI用户身份 -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
<!-- 整合hive -->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
3.3 hdfs-site.xml
HDFS的核心配置文件,有默认的配置项hdfs-default.xml。
hdfs-default.xml与hdfs-site.xml的功能是一样的,如果在hdfs-site.xml里没有配置的属性,则会自动会获取hdfs-default.xml里的相同属性的值。
cd /export/server/hadoop/etc/hadoop/
vim hdfs-site.xml
在文件的configuration的标签中添加以下内容:
<!-- 指定secondarynamenode运行位置 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node2.itcast.cn:50090</value>
</property>
3.4 mapred-site.xml
MapReduce的核心配置文件,有默认的配置项mapred-default.xml。
mapred-default.xml与mapred-site.xml的功能是一样的,如果在mapred-site.xml里没有配置的属性,则会自动会获取mapred-default.xml里的相同属性的值。
cd /export/server/hadoop/etc/hadoop/
vim mapred-site.xml
在文件的configuration的标签中添加以下内容:
mapreduce.framework.name
yarn
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
3.5 yarn-site.xml
YARN的核心配置文件,有默认的配置项yarn-default.xml。
yarn-default.xml与yarn-site.xml的功能是一样的,如果在yarn-site.xml里没有配置的属性,则会自动会获取yarn-default.xml里的相同属性的值。
cd /export/server/hadoop/etc/hadoop/
vim yarn-site.xml
在文件的configuration的标签中添加以下内容:
<!-- 指定YARN的主角色(ResourceManager)的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node1.itcast.cn</value>
</property>
<!-- NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序默认值:"" -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 是否将对容器实施物理内存限制 -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<!-- 是否将对容器实施虚拟内存限制。 -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<!-- 开启日志聚集 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 设置yarn历史服务器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://node1.itcast.cn:19888/jobhistory/logs</value>
</property>
<!-- 保存的时间7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
3.6 workers
workers文件里面记录的是集群主机名。主要作用是配合一键启动脚本如start-dfs.sh、stop-yarn.sh用来进行集群启动。这时候workers文件里面的主机标记的就是从节点角色所在的机器。
vim workers
清空内容后, 添加以下内容:
node1.itcast.cn
node2.itcast.cn
node3.itcast.cn
- scp同步安装包
cd /export/server
scp -r hadoop-3.3.0/ node2:PWD
分发后, 需要在node2和node3上分别创建软连接
cd /export/server/
ln -s hadoop-3.3.0/ hadoop
在node1上进行了配置文件的修改,使用scp命令将修改好之后的安装包同步给集群中的其他节点。
5. Hadoop环境变量
3台机器都需要配置环境变量文件。
vim /etc/profile
#HADOOP_HOME
export HADOOP_HOME=/export/server/hadoop
export PATH=HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
- Hadoop集群启动、初体验
6.1 启动方式
要启动Hadoop集群,需要启动HDFS和YARN两个集群。
注意:首次启动HDFS时,必须对其进行格式化操作。本质上是一些清理和准备工作,因为此时的HDFS在物理上还是不存在的。
hadoop namenode -format
6.1.1 单节点逐个启动
在主节点上使用以下命令启动HDFS NameNode:
$HADOOP_HOME/bin/hdfs --daemon start namenode
在每个从节点上使用以下命令启动HDFS DataNode:
$HADOOP_HOME/bin/hdfs --daemon start datanode
在node2上使用以下命令启动HDFS SecondaryNameNode:
$HADOOP_HOME/bin/hdfs --daemon start secondarynamenode
在主节点上使用以下命令启动YARN ResourceManager:
$HADOOP_HOME/bin/yarn --daemon start resourcemanager
在每个从节点上使用以下命令启动YARN nodemanager:
$HADOOP_HOME/bin/yarn --daemon start nodemanager
如果想要停止某个节点上某个角色,只需要把命令中的start改为stop即可。
6.1.2 脚本一键启动
如果配置了etc/hadoop/workers和ssh免密登录,则可以使用程序脚本启动所有Hadoop两个集群的相关进程,在主节点所设定的机器上执行。
hdfs:$HADOOP_PREFIX/sbin/start-dfs.sh
yarn: $HADOOP_PREFIX/sbin/start-yarn.sh
停止集群:stop-dfs.sh、stop-yarn.sh
同时还提供了完整的一键化脚本:
start-all.sh 和 stop-all.sh
- 启动后的效果
- 集群web-ui
一旦Hadoop集群启动并运行,可以通过web-ui进行集群查看,如下所述:
NameNode http://nn_host:port/ 默认9870.
ResourceManager http://rm_host:port/ 默认 8088. - MapReduce jobHistory
JobHistory用来记录已经finished的mapreduce运行日志,日志信息存放于HDFS目录中,默认情况下没有开启此功能,需要在mapred-site.xml中配置并手动启动。
9.1 修改mapred-site.xml
cd /export/servers/hadoop-3.3.0/etc/hadoop
vim mapred-site.xml
MR JobHistory Server管理的日志的存放位置
mapreduce.jobhistory.address
node1:10020
查看历史服务器已经运行完的Mapreduce作业记录的web地址,需要启动该服务才行
mapreduce.jobhistory.webapp.address
node1:19888
9.2 分发配置到其他机器
cd /export/servers/hadoop/etc/hadoop
scp -r mapred-site.xml node2:PWD
9.3 启动jobHistoryServer服务进程
mapred --daemon start historyserver
如果关闭的话 用下述命令
mapred --daemon stop historyserver
9.4 页面访问jobhistoryserver
http://node1:19888/jobhistory
hive安装
Hive安装操作
1.Hive metastore远程模式安装部署
课程中采用远程模式部署hive的metastore服务。在node1机器上安装。
注意:以下两件事在启动hive之前必须确保正常完成。
1、选择某台机器提前安装mysql,确保具有远程访问的权限。
2、启动hadoop集群 确保集群正常健康
1.1.Hadoop中添加用户代理配置
#修改hadoop 配置文件 etc/hadoop/core-site.xml,加入如下配置项
hadoop.proxyuser.root.hosts
hadoop.proxyuser.root.groups
1.2.上传安装包 并解压
tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /export/server/
cd /export/server/
ln -s apache-hive-3.1.2-bin/ hive
解决Hive与Hadoop之间guava版本差异
cd /export/server/hive/
rm -rf lib/guava-19.0.jar
cp /export/server/hadoop/share/hadoop/common/lib/guava-27.0-jre.jar lib/
1.3.修改配置文件hive-env.sh
cd /export/server/hive/conf
cp hive-env.sh.template hive-env.sh
vim hive-env.sh
修改一下几处内容: 第48行
export HADOOP_HOME=/export/server/hadoop
export HIVE_CONF_DIR=/export/server/hive/conf
export HIVE_AUX_JARS_PATH=/export/server/hive/conf/lib
1.4.添加配置文件hive-site.xml
vim hive-site.xml
添加以下内容:
javax.jdo.option.ConnectionURL jdbc:mysql://node1.itcast.cn:3306/hive3?createDatabaseIfNotExist=true&useSSL=false
<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>
<!-- H2S运行绑定host -->
<property>
<name>hive.server2.thrift.bind.host</name>
<value>node1.itcast.cn</value>
</property>
<!-- 远程模式部署metastore metastore地址 -->
<property>
<name>hive.metastore.uris</name>
<value>thrift://node1.itcast.cn:9083</value>
</property>
<!-- 关闭元数据存储授权 -->
<property>
<name>hive.metastore.event.db.notification.api.auth</name>
<value>false</value>
</property>
1.5.上传MySQL驱动 #上传mysql jdbc驱动到hive安装包lib下
mysql-connector-java-5.1.32.jar
1.6.初始化元数据
cd /export/server/hive/
bin/schematool -initSchema -dbType mysql -verbos
#初始化成功会在mysql中创建74张表1.7.创建hive存储目录
hadoop fs -mkdir /tmp
hadoop fs -mkdir -p /user/hive/warehouse
hadoop fs -chmod g+w /tmp
hadoop fs -chmod g+w /user/hive/warehouse
2.metastore 的启动方式
cd /export/server/hive
#前台启动 关闭ctrl+c
./bin/hive --service metastore#前台启动开启debug日志
./bin/hive --service metastore --hiveconf hive.root.logger=DEBUG,console#后台启动 进程挂起 关闭使用jps+ kill -9
nohup ./bin/hive --service metastore &
nohup ./bin/hive --service hiveserver2 &
3.Hive Client、Beeline Client
3.1.第一代客户端Hive Client
在hive安装包的bin目录下,有hive提供的第一代客户端 bin/hive。使用该客户端可以访问hive的metastore服务。从而达到操作hive的目的。
使用下面的命令启动hive的客户端:
/export/server/hive/bin/hive
可以发现官方提示:第一代客户端已经不推荐使用了。
3.2.第二代客户端Hive Beeline Client
hive经过发展,推出了第二代客户端beeline,但是beeline客户端不是直接访问metastore服务的,而是需要单独启动hiveserver2服务。
在hive运行的服务器上,首先启动metastore服务,然后启动hiveserver2服务。
nohup /export/server/hive/bin/hive --service metastore &
nohup /export/server/hive/bin/hive --service hiveserver2 &使用beeline客户端进行连接访问。
/export/server/hive/bin/beeline
beeline> ! connect jdbc:hive1://node1:10000
Enter username for jdbc:hive1://node1:10000: root
Enter password for jdbc:hive1://node1:10000: *******(任意)
说明: 在其他的节点想要连接hive, 只需要有hive的beeline的客户端即可