目录
添加 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”,表示继续。因为目 前尚未完成密钥认证的配置,所以使用 scp 命令拷贝文件需要输入slave1 节点 hadoop 用户的密码。
在每个 Slave 节点把 Master 节点复制的公钥复制到authorized_keys 文件
hadoop 用户登录 slave1 和 slave2 节点,执行命令。
cat ~/id_rsa.pub >>~/.ssh/authorized_keys
在每个 Slave 节点删除 id_rsa.pub 文件
rm -rf ~/id_rsa.pub
将每个 Slave 节点的公钥保存到 Master
将 Slave1 节点的公钥复制到 Master
scp ~/.ssh/id_rsa.pub hadoop@master:~/
在 Master 节点把从 Slave 节点复制的公钥复制到 authorized_keys 文件
cat ~/id_rsa.pub >>~/.ssh/authorized_keys
在 Master 节点删除 id_rsa.pub 文件
rm -rf ~/id_rsa.pub
将 Slave2 节点的公钥复制到 Master
scp ~/.ssh/id_rsa.pub hadoop@master:~/
在 Master 节点把从 Slave 节点复制的公钥复制到 authorized_keys 文件
cat ~/id_rsa.pub >>~/.ssh/authorized_keys
在 Master 节点删除 id_rsa.pub 文件
rm -rf ~/id_rsa.pub
验证 SSH 无密码登录
查看 Master 节点 authorized_keys 文件
cat ~/.ssh/authorized_keys
可以看到 Master 节点 authorized_keys 文件中包括 master、slave1、slave2 三个节点 的公钥。
查看 Slave 节点 authorized_keys 文件
cat ~/.ssh/authorized_keys
可以看到 Slave 节点 authorized_keys 文件中包括 Master、当前 Slave 两个节点 的公钥。
验证 Master 到每个 Slave 节点无密码登录
hadoop 用户登录 master 节点,执行 SSH 命令登录 slave1 和 slave2 节点。可以观察 到不需要输入密码即可实现 SSH 登录。
ssh slave1
ssh slave2
验证两个 Slave 节点到 Master 节点无密码登录
ssh master
配置两个子节点slave1、slave2的JDK环境
cd /usr/local/src/
ls
scp -r jdk1.8.0_152 root@slave1:/usr/local/src/
scp -r jdk1.8.0_152 root@slave2:/usr/local/src/
#slave1
ls /usr/local/src/
vi /etc/profile
#此文件最后添加下面两行
export JAVA_HOME=/usr/local/src/jdk1.8.0_152
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
java -version
#slave2
ls /usr/local/src/
vi /etc/profile
#此文件最后添加下面两行
export JAVA_HOME=/usr/local/src/jdk1.8.0_152
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
java -version
在 Master 节点上安装 Hadoop
配置 Hadoop 环境变量
yum install -y vim
vim /etc/profile
tail -n 4 /etc/profile
export JAVA_HOME=/usr/local/src/jdk1.8.0_152
export PATH=$PATH:$JAVA_HOME/bin
export HADOOP_HOME=/usr/local/src/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
使配置的 Hadoop 的环境变量生效
su - hadoop
source /etc/profile
exit
执行以下命令修改 hadoop-env.sh 配置文件
cd /usr/local/src/hadoop/etc/hadoop/
vim hadoop-env.sh
#修改以下配置
export JAVA_HOME=/usr/local/src/jdk1.8.0_152
配置 hdfs-site.xml 文件参数
vim hdfs-site.xml
#编辑以下内容,写在<configuration>标签里面
配置 core-site.xml 文件参数
vim core-site.xml
#编辑以下内容,写在<configuration>标签里面,IP根据自己的IP修改
配置 mapred-site.xml
pwd
cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
#编辑以下内容,写在<configuration>标签里面
配置 yarn-site.xml
vim yarn-site.xml
#编辑以下内容,写在<configuration>标签里面
Hadoop 其他相关配置
配置 masters 文件
vim masters
配置 slaves 文件
vim slaves
新建目录
mkdir /usr/local/src/hadoop/tmp
mkdir /usr/local/src/hadoop/dfs/name -p
mkdir /usr/local/src/hadoop/dfs/data -p
修改目录权限
chown -R hadoop:hadoop /usr/local/src/hadoop/
同步配置文件到 Slave 节点
scp -r /usr/local/src/hadoop/ root@slave1:/usr/local/src/
scp -r /usr/local/src/hadoop/ root@slave2:/usr/local/src/
#slave1 配置
yum install -y vim
vim /etc/profile
chown -R hadoop:hadoop /usr/local/src/hadoop/
su - hadoop
source /etc/profile
#slave2 配置
yum install -y vim
vim /etc/profile
chown -R hadoop:hadoop /usr/local/src/hadoop/
su - hadoop
source /etc/profile
配置 Hadoop 格式化
将 NameNode 上的数据清零,第一次启动 HDFS 时要进行格式化,以后启动无 需再格式化,否则会缺失 DataNode 进程。另外,只要运行过 HDFS,Hadoop 的 工作目录(本书设置为/usr/local/src/hadoop/tmp)就会有数据,如果需要重 新格式化,则在格式化之前一定要先删除工作目录下的数据,否则格式化时会 出问题。
执行如下命令,格式化 NameNode
su – hadoop
cd /usr/local/src/hadoop/
bin/hdfs namenode –format
执行如下命令,启动 NameNode:
hadoop-daemon.sh start namenode
查看 Java 进程
启动完成后,可以使用 JPS 命令查看是否成功。JPS 命令是 Java 提供的一个显示当前所有 Java 进程 pid 的命令。
jps
slave节点 启动 DataNode
hadoop-daemon.sh start datanode
jps
hadoop-daemon.sh start datanode
jps
启动 SecondaryNameNode
hadoop-daemon.sh start secondarynamenode
jps
查看 HDFS 数据存放位置:
ll dfs/
ll ./tmp/dfs
可以看出 HDFS 的数据保存在/usr/local/src/hadoop/dfs 目录下,NameNode、 DataNode和/usr/local/src/hadoop/tmp/目录下,SecondaryNameNode 各有一个目 录存放数据。
查看 HDFS 的报告
hdfs dfsadmin -report
使用浏览器查看节点状态
使用浏览器查看节点状态
Hive组件安装配置
下载和解压安装文件
基础环境和安装准备
解压安装文件
mv /usr/local/src/apache-hive-2.0.0-bin /usr/local/src/hive