目录
添加 root 用户从本地和远程访问 MySQL 数据库表单的授权。
(3)通过 vi 编辑器修改 hive-site.xml 文件实现 Hive 连接 MySQL 数据库,并设定
(3)验证元数据存储版本一致性。若默认 false,则不用修改。
(5)配置数据库用户名 javax.jdo.option.ConnectionUserName 为 root。
(6 )将以下位置的 ${system:java.io.tmpdir}/${system:user.name} 替换为 “/usr/local/src/hive/tmp”目录及其子目录。
1)将 MySQL 数据库驱动(/opt/software/mysql-connector-java-5.1.46.jar)拷贝到
Hadoop搭建
准备三台虚拟机
分别命名为master、slave1、slave2,然后使用bash命令刷新一下,最后使用hostname命令查看是否修改成功
hostnamectl set-hostname master
hostnamectl set-hostname slave1
hostnamectl set-hostname slave2
设置域名解析
vi /etc/hosts
查看SSH服务的状态
systemctl status sshd
关闭防火墙
systemctl stop firewalld
查看防火墙状态,检查防火墙是否关闭成功
systemctl status firewalld
看到 inactive (dead)表示防火墙已经关闭。不过这样设置后,Linux 系统如 果重启,防火墙仍然会重新启动。执行如下命令可以永久关闭防火墙。
systemctl disable firewalld
创建hadoop用户
useradd hadoop
更改用户 hadoop 的密码 。 passwd:所有的身份验证令牌已经成功更新。
echo "1" |passwd --stdin hadoop
安装JAVA环境
卸载自带的OpenJDK
rpm -qa | grep java
卸载相关服务
rpm -e --nodeps javapackages-tools-3.4.1-11.el7.noarch
rpm -e --nodeps java-1.8.0-openjdk-1.8.0.352.b08-2.el7_9.x86_64
rpm -e --nodeps tzdata-java-2022e-1.el7.noarch
rpm -e --nodeps python-javapackages-3.4.1-11.el7.noarch
rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.352.b08-2.el7_9.x86_64
检查是否清空
rpm -qa | grep java
查看删除结果再次键入命令 java -version 出现以下结果表示删除功
java --version
在/opt/software目录下事先准备好软件包,将安装包解压到/usr/local/src目录下
tar -zxvf /opt/software/jdk-8u152-linux-x64.tar.gz -C /usr/local/src/
进入目录查看是否安装成功
ls /usr/local/src/
设置JAVA环境变量
vi /etc/profile
在文件的最后增加如下两行:
export JAVA_HOME=/usr/local/src/jdk1.8.0_152
export PATH=$PATH:$JAVA_HOME/bin
执行 source 使设置生效:
source /etc/profile
检查 JAVA 是否可用。
echo $JAVA_HOME
使用如下命令显示 Java 版本则说明 JDK 安装并配置成功。
java -version
安装Hadoop软件
获取Hadoop安装包
Apache Hadoop 各 个 版 本 的 下 载 网 址 : https://archive.apache.org/dist/hadoop /common/。本教材选用的是 Hadoop 2.7.1 版本,安装包为 hadoop-2.7.1.tar.gz。需要先下载 Hadoop 安装包,再上传到 Linux 系统的/opt/software 目录。
解压安装包到/usr/local/src/目录下
tar -zxvf /opt/software/hadoop-2.7.1.tar.gz -C /usr/local/src/
检查目录
ll /usr/local/src/
查看 Hadoop 目录
ll /usr/local/src/hadoop/
解析:
bin:此目录中存放 Hadoop、HDFS、YARN 和 MapReduce 运行程序和管理 软件。
etc:存放 Hadoop 配置文件。
include: 类似 C 语言的头文件
lib:本地库文件,支持对数据进行压缩和解压。
libexe:同 lib
sbin:Hadoop 集群启动、停止命令
share:说明文档、案例和依赖 jar 包。
设置Hadoop环境变量
修改/etc/profile 文件
vi /etc/profile
在文件的最后增加如下两行:
export HADOOP_HOME=/usr/local/src/hadoop-2.7.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
执行 source 使用设置生效:
source /etc/profile
检查设置是否生效:
hadoop
出现上述 Hadoop 帮助信息就说明 Hadoop 已经安装好了。
修改目录所有者和所有者组,上述安装完成的 Hadoop 软件只能让 root 用户使用,要让 hadoop 用户能够 运行 Hadoop 软件,需要将目录/usr/local/src 的所有者改为 hadoop 用户。
chown -R hadoop:hadoop /usr/local/srv
ll /usr/local/src/
/usr/local/src 目录的所有者已经改为 hadoop 。
安装单机版Hadoop系统
设置Hadoop配置文件
cd /usr/local/src/hadoop/
ls
vi etc/hadoop/hadoop-env.sh
在文件中查找 export JAVA_HOME 这行,将其改为如下所示内容:
export JAVA_HOME=/usr/local/src/jdk1.8.0_152
测试Hadoop本地模式的运行
切换到Hadoop用户
su - hadoop
id
创建输入数据存放目录,将输入数据存放在~/input 目录(hadoop 用户主目录下的 input 目录中)。
mkdir ~/input
ls
创建数据文件 data.txt,将要测试的数据内容输入到 data.txt 文件中。
vi input/data.txt
测试 MapReduce 运行
hadoop jar /usr/local/src/hadoop-2.7.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar wordcount ~/input/data.txt ~/output
运行结果保存在~/output 目录中(注:结果输出目录不能事先存在),命令执 行后查看结果:
ll output/
文件_SUCCESS 表示处理成功,处理的结果存放在 part-r-00000 文件中,查看该 文件。
cat output/part-r-00000
可以看出统计结果正确,说明 Hadoop 本地模式运行正常。
配置实验环境下集群网络
vi /etc/hosts
SSH无密码验证配置
每个节点安装和启动 SSH 协议,
实现 SSH 登录需要 openssh 和 rsync 两个服务,一般情况下默认已经安装(如没有自行安 装),可以通过下面命令查看结果。
rpm -qa | grep openssh
rpm -qa | grep rsync
切换到 hadoop 用户
su - hadoop
每个节点生成秘钥对
#在 master 上生成密钥
ssh-keygen -t rsa
#slave1 生成密钥
ssh-keygen -t rsa
#slave2 生成密钥
ssh-keygen -t rsa
查看"/home/hadoop/"下是否有".ssh"文件夹,且".ssh"文件下是否有两个刚 生产的无密码密钥对。
ls ~/.ssh/
将 id_rsa.pub 追加到授权 key 文件中
#master
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ls ~/.ssh/
#slave1
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ls ~/.ssh/
#slave2
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ls ~/.ssh/
修改文件"authorized_keys"权限
通过 ll 命令查看,可以看到修改后 authorized_keys 文件的权限为“rw-------”,表示所有者 可读写,其他用户没有访问权限。如果该文件权限太大,ssh 服务会拒绝工作,出现无法 通过密钥文件进行登录认证的情况。
#master
chmod 600 ~/.ssh/authorized_keys
ll ~/.ssh/
#slave1
chmod 600 ~/.ssh/authorized_keys
ll ~/.ssh/
#slave2
chmod 600 ~/.ssh/authorized_keys
ll ~/.ssh/
配置 SSH 服务
使用 root 用户登录,修改 SSH 配置文件"/etc/ssh/sshd_config"的下列内容,需要将该配 置字段前面的#号删除,启用公钥私钥配对认证方式。
#master
su - root
vi /etc/ssh/sshd_config
PubkeyAuthentication yes #找到此行,并把#号注释删除。
#slave1
su - root
vi /etc/ssh/sshd_config
PubkeyAuthentication yes #找到此行,并把#号注释删除。
#slave2
su - root
vi /etc/ssh/sshd_config
PubkeyAuthentication yes #找到此行,并把#号注释删除。
设置完后需要重启 SSH 服务,才能使配置生效。
systemctl restart sshd
切换到 hadoop 用户
su - hadoop
验证 SSH 登录本机
在 hadoop 用户下验证能否嵌套登录本机,若可以不输入密码登录,则本机通过密钥登录 认证成功。
ssh localhost
交换 SSH 密钥
将 Master 节点的公钥 id_rsa.pub 复制到每个 Slave 点
hadoop 用户登录,通过 scp 命令实现密钥拷贝。
scp ~/.ssh/id_rsa.pub hadoop@slave1:~/
scp ~/.ssh/id_rsa.pub hadoop@slave2:~/
首次远程连接时系统会询问用户是否要继续连接。需要输入“yes”&#