Hadoop集群搭建及使用maven配置使用打jar包等等持续更新
文章目录
小声哔哔
Hadoop零基础开始,从装虚拟机开始,搭Hadoop集群,maven的配置,IDEA下创建maven项目,打jar包等等
持续更新中……
本人在校学生一枚,嘻嘻,一边学一边总结,这篇文章主要是步骤操作,若有不足之处,请大佬指点指点,好有启发
一、虚拟机VMware
的下载和安装
VMware官网下载:https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html
或者
百度网盘下载:https://pan.baidu.com/s/1oRnA9mYB2DIEaolMJk0Cmg?pwd=LJH1
- 鼠标右击【VMware16.0】选择【解压到VMware16.0】
- 打开解压后的文件夹,鼠标右击【VMware-workstation-full-16.0.0-16894299】选择【以管理员身份运行】
- 点击【下一步】
- 勾选【我接受许可协议中的条款】,点击【下一步】
- 点击【更改…】
- 修改“文件夹名称”路径地址中的C可更改安装位置(我这里将C改为D表示安装在D盘),点击【确定】
- 点击【下一步】
- 取消勾选【启动时检查……】和【加入VMware……】,点击【下一步】
- 点击【下一步】
- 点击【安装】
- 软件安装中……
- 点击【许可证】
- 打开解压后的文件夹中的key.txt文件,复制任意一行粘贴到许可证里面,点击【输入】
- 安装完成,点击【完成】,并重启电脑
- 双击桌面【VMware Workstation Pro】图标启动软件
- 安装成功
二、CentOS7
下载及安装
CentOS7官网下载:https://www.centos.org/download
或者
百度网盘下载:https://pan.baidu.com/s/1f-P85vORzecgaDqapdtO6g?pwd=LJH1
-
在桌面找到“VMware WorkstationPro”,双击打开
-
点击“创建新的虚拟机”
-
选择“典型”,点击“下一步”
-
选择“稍后安装操作系统”,点击“下一步”
-
选择“Linux”,版本选择“CentOS 7 64位”,点击“下一步”
-
虚拟机名称输入“Hadoop”,点击“浏览”更改系统的安装位置,点击“下一步”
-
点击“下一步”
-
点击“自定义硬件”
-
选择内存,建议大小“2GB”
-
选择“新CD/DVD(SATA)”后选择“使用ISO镜像文件”,点击“浏览”找到并选择解压后“CentOS 7”文件夹里面的“CentOS-sever-7.0”这个镜像
-
点击“网络适配器”,网络连接选择“NAT 模式”
-
点击“关闭”
-
点击“完成”
-
选中“Hadoop”,点击“开启此虚拟机”
-
用键盘上的上下箭头,选择“InstallCentOS7”
-
正在加载镜像
-
选择“English”,点击“Continue”
-
点击“DATE & TIME”
-
点击地图上的中国地图
-
点击”Done“
-
点击”SOFTWARE SELECTION“
-
选择“Service with GUI”,点击“Done”
-
点击“INSTALLATION DESTINATION”
-
点击”Other Storage Options“下的”Partitioning“中的”I will configure partitioning“
-
点击“Done”
-
点击“+”
-
“Mount Point”选择“swap”,“Desired Capacity”输入“4GB”,再点击“Add mount point”
-
再点击“+”
-
“Mount Point”选择“/boot”,“Desired Capacity”输入“512mb”,再点击“Add mount point”
-
再次点击“+”
-
“Mount Point”选择“/”,“Desired Capacity”不用输入,点击“Add mount point”
-
点击“Done”
-
点击“Accept Changes”
-
点击“Begin Installation”
-
点击“ROOT PASSWORD”
-
输入Root密码,然后点击“Done”,温馨提示:如果输入的密码较弱需要点击两次“Done”
-
点击“CREATE USER”
-
输入Full name,User name,Password,Confim password,然后点击“Done”,温馨提示:如果输入的密码较弱需要点击两次“Done”
-
CentOS7安装中,等待安装
-
安装完成,点击“Reboot”
-
重启后不要有任何操作
-
点击“LICENSE INFORMATION”
-
勾选“I accept the license agreement”,点击“Done”
-
点击“FINSH CONFIGURATION”
-
点击“Not listed?”
-
在“Username”中输入“root”,点击“Next”
-
在“Password”中输入root密码,点击“Sign In”
-
点击“Next”
-
点击“Next”
-
点击“Next”
-
点击“Skip”
-
点击“Start using CentOS Linux”
-
点击“x”
-
CentOS7安装完成
三、Hadoop
集群的搭建
A、配置静态IP
-
root用户下,桌面右键,点击
Open Terminal
,打开终端 -
输入
ifconfig
查看默认的动态IP,记住动态IP -
输入
vim /etc/sysconfig/network-scripts/ifcfg-ens33
进入网络配置文件 -
按
i
键进入编辑模式(vim的命令只说一遍,不会可以问度娘)
将BOOTPROTO
这行修改成BOOTPROTO=static
将ONBOOT
这行修改成ONBOOT=yes
然后在最下面添加5行
IPADDR
为本机IP地址,输入刚查的动态IP
NETMASK
为子网掩码,基本都是255.255.255.0
GATEWAY
为网关地址,跟IP一样,把末尾改成2
DNS1
和DNS2
都为域名服务器
DNS1
设置为本机局域网域名服务器,跟IP一样,把末尾改成1
DNS2
设置为网络域名服务器,可设为8.8.8.8
-
按
Esc
键进入命令模式
按:
键进入末行模式,输入wq
或者wq!
,按Enter
键保存退出 -
输入
service network restart
重启网卡 -
再次输入
ifcongif
查看网路配置 -
查看防火墙
firewall-cmd --state
-
关闭防火墙
systemctl stop firewall.service
-
关闭防火墙开机自启
systemctl disable firewalld.service
B、创建共享文件夹
-
在VM菜单栏点击
虚拟机
中的设置
-
点击
选项
下的共享文件夹
,选择总是启用
,点击添加
添加win下面的一个文件夹作为共享文件夹,点击确定
-
在终端输入
vmware-hgfsclient
查看共享文件夹情况 -
在
/mnt
目录下创建/hgfs
,再在/hgfs
目录下创建共享文件夹目录,指令mkdir -p /mnt/hgfs/LJHshared
,LJHshared为共享文件夹名 -
vim
打开/etc/fstab
文件,添加如下内容
.host:/LJHshared /mnt/hgfs/LJHshared fuse.vmhgfs-fuse allow_other,defaults 0 0
host:/LJHshared
为设置的共享目录名称
/mnt/hgfs/LJHshared
为挂载位置
- 完成上面步骤后,在终端输入命令
mount -a
使其立即生效,在输入reboot
重启CentOS,查看挂载目录是否生效
C、Linux
下配置Java
环境和Hadoop
环境
Java官网下载:
https://www.java.com/zh-CN/download/manual.jsp
Hadoop官网下载:
https://hadoop.apache.org/releases.html
或者
百度网盘下载:
https://pan.baidu.com/s/1HxEwJTmlwATXTrvg9JeLeA?pwd=LJH1
-
将下载好的两个文件放到共享文件夹中
-
进入Linux系统终端的共享文件夹中查看
-
将两个文件复制粘贴到
/home
下 -
到
/home
下查看 -
解压这两个文件
tar -zxvf hadoop-2.6.5.tar.gz
tar -zxvf jdk-8u161-linux-x64.tar.gz
-
查看解压后的文件
-
vim
进入/etc/profile
文件进行配置环境变量,添加这三行,保存退出
export JAVA_HOME=/home/jdk1.8.0_161
export HADOOP_HOME=/home/hadoop-2.6.5
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
-
输入
source /etc/profile
使环境变量生效 -
输入
java -version
查看Java版本即Java是否配置完成 -
输入
hadoop version
查看Hadoop版本即Hadoop是否配置完成
D、通过Hadoop
的克隆生成Hadoop1
和Hadoop2
-
vim
进入/etc/hostname
文件,将里面内容清空,再写上本台虚拟机名Hadoop
,保存退出
-
vim
进入/etc/hosts
文件,将里面的内容清空,写上以下代码,保存退出
192.168.12.128 Hadoop
192.168.12.129 Hadoop1
192.168.12.130 Hadoop2
前面为每台虚拟机的IP,后面为主机名
后两行是咱们等会克隆后,修改的IP和主机名
-
关闭虚拟机
-
在VM虚拟机页面的最左边
库
里面右键Hadoop
->管理
,选择克隆
-
点击“下一页”
-
选择“虚拟机中的当前状态”,点击“下一页”
-
选择“创建完整克隆”,点击“下一页”
-
更改虚拟机名称,点击“浏览”,更改克隆到的位置,点击“完成”
-
正在克隆
-
克隆完成,点击“关闭”
-
点击“开启虚拟机",打开刚克隆完成的虚拟机
-
使用root登录,登陆进去后打开终端,
vim
打开/etc/hostname
文件,将里面的主机名,Hadoop修改成Hadoop1
,保存退出
(这里的主机名要和/etc/hosts文件里面内容对应上)
-
输入
vim /etc/sysconfig/network-scripts/ifcfg-ens33
进入网络配置文件,修改里面的IP地址,将IPADDR
的值修改成Hadoop1的IP地址192.168.12.129
(这里的IP要和/etc/hosts文件里面内容对应上)
-
重复克隆,修改主机名和IP地址,克隆出Hadoop2
在这里步骤就省略啦!步骤参考通过Hadoop克隆出Hadoop1的步骤
-
全部克隆完成后,Hadoop,Hadoop1,Hadoop2,同时都能打开就没问题了
E、使用命令终端工具MobaXterm
连接
推荐使用MobaXterm
相对来说,MobaXterm比Xshell和SecureCRT都好用,功能还多
MobaXterm官网下载:
https://mobaxterm.mobatek.net/download.html
-
将下载好的压缩包解压, 打开解压后的文件夹
-
鼠标右击
MobaXterm_installer_22.0.msi.exe
,选择”以管理员方式打开“ -
点击
Next
-
点击
I accept the terms in the License Agreement
,再点击Next
-
点击
Change...
修改安装路径,再点击Next
-
点击
Install
-
点击
Finish
-
在VM虚拟机中的三台机子上配置
ssh免密登录
,输入以下命令,命令执行中,需要输入yes/no
时输入yes
,其他均按Enter
键,三个IP分别对应三台机子的IP地址
ssh-keygen -t rsa
ssh-copy-id 192.168.12.128
ssh-copy-id 192.168.12.129
ssh-copy-id 192.168.12.130
-
打开
MobaXterm
-
进入使用界面,选择
Session
->SSH
-
填写需要连接的远程主机 IP 和 用户名
(一直使用root登录)
-
点击
OK
,进入到远程机器的密码输入页面,输入主机的正确登录密码 -
选择
Yes
,即可保存密码,以后访问该主机,不用每次再输入主机密码 -
至此,即可操作远程的主机,进行相应的工作
-
重复以上步骤,添加连接后两台主机
F、修改Hadoop下的配置文件并启动集群
cd
到/home/hadoop-2.6.5/etc/hadoop/
目录下,ls
查看vim
进入core-site.xml
文件进行修改,将configuration
标签内容修改成如下代码,保存退出
以下修改文件操作,里面的IP地址是第一台主机的IP,端口号是根据hadoop版本不一样而不同的,其他版本的可以问度娘
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.12.128:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/data</value>
</property>
</configuration>
vim
进入hdfs-site.xml
文件进行修改,将configuration
标签内容修改成如下代码,保存退出
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>192.168.12.128:50090</value>
</property>
</configuration>
vim
进入mapred-site.xml
文件进行修改,将configuration
标签内容修改成如下代码,保存退出
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.app-submission.cross-platform</name>
<value>true</value>
</property>
</configuration>
vim
进入slaves
文件进行修改,将里面内容清空修改成如下代码,保存退出
Hadoop
Hadoop1
Hadoop2
- 把配置好的文件分发到另两台主机,目前还在
/home/hadoop-2.6.5/etc/hadoop
下,cd ../
回到上一级目录/home/hadoop-2.6.5/etc
进行操作
scp -r ./hadoop hadoop1: `pwd`
scp -r ./hadoop hadoop2: `pwd`
- 分完完成之后,首次启动集群,必须进行格式化操作
(一次即可)
hadoop namenode -format
- 启动集群:
start-all.sh
- 停止集群 :
stop-dfs.sh
,stop-yarn.sh
在这里我就不演示停止集群命令了,后面还要保持集群在启动状态下
-
每一台主机下输入
jps
查看集群进程
-
在win下打开浏览器,最上面搜索栏输入
192.168.12.128:50070
,前面为第一台主机IP,后面为端口号 -
能打开这个网页说明集群没问题
四、Win下安装配置Java环境和Hadoop环境
Java官网下载:
https://www.oracle.com/java/technologies/downloads/#java8-windows
Hadoop官网下载:
https://hadoop.apache.org/releases.html
或者
百度网盘下载:
https://pan.baidu.com/s/1Q37NKBXUqHk0fEZ7w323hQ?pwd=LJH1
-
解压下载好的两个压缩包,解压后打开文件夹
-
右击
jdk-8u333-windows-x64.exe
以管理员方式打开 -
点击
下一步
-
这里可以修改jdk安装路径,建议不要动,默认安装比较好点,点击
下一步
-
jdk安装中
-
这里可以修改jre安装路径,建议不要动,默认安装比较好点,点击
下一步
-
jre安装中
-
安装完成,点击
关闭
-
右击Win任务栏中的
开始图标
,点击系统
,我这是win11,win10跟win11也差不多一样 -
点击
高级系统设置
-
点击
环境变量
-
在
系统变量
下面 点击新建
-
在
变量名
中输入JAVA_HOME
-
点击
浏览目录
,找到jdk安装的路径,点击确定
-
将变量值中的路径中的
Program File
改成PROGRA~1
,防止后面在cmd
中报错,点击确定
-
在系统变量中找到
PATH
,双击打开 -
点击
新建
,输入%JAVA_HOME%\bin
,点击上移动把这行移动到最上面,再点击确定
-
点击
确定
-
将刚打开的Hadoop的文件夹中的整个
hadoop-2.8.4
文件夹复制,目录切换到C:\Program Files
文件夹下,鼠标右键新建文件夹
,重命名为Hadoop
,打开到Hadoop
文件夹内,粘贴刚复制的hadoop-2.8.4
文件夹 -
打开系统属性中的
环境变量
-
跟刚才配置Java一样,配置Hadoop环境变量
-
双击打开
PATH
,添加这两行,添加完后点击确定
-
点击
确定
-
按
Win
+R
键打开运行,输入cmd
,点击确定
-
输入
java -version
查看Java版本 -
输入
hadoop version
查看Hadoop版本 -
以上就说明Java和Hadoop环境变量配置成功,记得关闭
cmd
若
Hadoop version
运行显示报错,可参考我的这篇文章:
win下hadoop配置环境后cmd中报错
五、Win下安装配置Maven环境及修改配置文件
Maven官网下载:
https://maven.apache.org/download.cgi
或者
百度网盘下载:
https://pan.baidu.com/s/1RuhfkMZhaHn1vTVg5Nqypw?pwd=LJH1
-
将下载好的压缩包解压并打开
-
将文件夹中的整个
apache-maven-3.6.0
文件夹复制,目录切换到C:\Program Files
文件夹下,鼠标右键新建文件夹
,重命名为Maven
,打开到Maven
文件夹内,粘贴刚复制的apache-maven-3.6.0
文件夹 -
打开系统属性中的
环境变量
-
跟刚才配置Java一样,配置Maven环境变量
这里的Program File
可修改成PROGRA~1
,也可以不用修改
-
双击
PATH
,添加这一行,添加完后点击确定
-
点击
确定
-
点击
确定
-
选择一个比较大的盘,里面新建一个文件夹,重命名为
repository
,复制路径 -
打开刚安装好的
Maven
目录下,进入conf
目录下,找到setting.xml
文件右键->打开方式->记事本
方式打开 -
找到图片位置
10.再下面添加一行,一定是在-->
的后面添加 ,localRepository
标签里面是本地仓库路径
<localRepository>D:/repository</localRepository>
- 继续往下找,找到图片位置
- 在下面添加这几行,这是引用阿里云的镜像
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
- 继续往下找,找到图片位置
- 在下面添加这几行,这是添加的是Java,
注意Java版本
<profile>
<id>jdk1.8.0_333</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
-
保存退出
-
按
Win
+R
键打开运行,输入cmd
,点击确定
-
输入
mvn -version
查看Maven版本 -
以上说明Maven配置成功
六、Win下安装IDEA及使用IDEA创建Maven项目
IDEA官网下载:
https://www.jetbrains.com/idea/downloadi
或者
百度网盘下载:
https://pan.baidu.com/s/1o-l7qEenZdqZsHHgBcx7jw?pwd=LJH1
IDEA安装步骤百度网盘压缩包里有,在这我就省略了
- 打开IDEA,点击
Create New Project
- 选择
Maven
项目,选择你的Java版本
,勾选Create from archetype
,找到选择下面的’maven-archetype-quickstart’,点击Next
- 输入你的项目名称和本地保存路径,点击
Next
- 选择你的
maven安装路径
,后面两个打对勾,选择你刚修改的maven\conf\setting.xml
配置文件路径,再选择你的本地仓库
路径,点击Finish
- 等待一会,加载完成后,修改配置
pom.xml
文件,再dependencies
标签中加入一下的内容
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.6.5</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.6.5</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.6.5</version>
</dependency>
- 点击右下方的
Import Changes
,该步骤可能花费时间较长,请耐心等待 - 完成后,在左边文件目录里
main
下新建一个文件夹,命名为resources
- 将虚拟机里面
/home/hadoop-2.6.5/etc/hadoop
目录下的core-site.xml
,dfs-site.xml
,mapred-site.xml
,yarn-site.xml
,log4j.properties
这五个文件复制到共享文件夹下,再复制粘贴到resources
里面 - 双击打开
log4j.properties
文件,将里面的内容全部删掉,把下面内容保存进去
log4j.rootLogger=INFO, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spring.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
七、使用Maven编写一个统计一篇文章每个单词出现的次数并打包成jar包实现
- 在
java
下创建一个java class
类,命名为wordCount
map阶段
:重写Mapper
方法
//map阶段
public static class MyMapper extends Mapper<LongWritable, Text, Text, IntWritable> {
@Override
protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
String s = value.toString();
String[] split = s.split(" "); //文章中的单词之间是以空格分开的
for (String i : split) {
context.write(new Text(i), new IntWritable(1));
}
}
}
reduce阶段
:重写Reducer
方法
//reduce阶段
public static class MyReducer extends Reducer<Text, IntWritable, Text, IntWritable> {
@Override
protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
int sum = 0;
for (IntWritable i : values) {
sum += i.get();
}
context.write(key, new IntWritable(sum));
}
}
- 写入
main
方法
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
System.setProperty("HADOOP_USE_NAME", "root");
conf.set("mapred.jar", "D:\\maven\\target\\maven-1.0-SNAPSHOT.jar");
Job job = Job.getInstance(conf);
job.setJarByClass(wordCount.class);
job.setMapperClass(MyMapper.class);
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(IntWritable.class);
job.setReducerClass(MyReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
job.waitForCompletion(true);
System.out.println("********************");
}
- 别忘了引入所需要的库,全部代码如下
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import java.io.IOException;
public class wordCount {
//map阶段
public static class MyMapper extends Mapper<LongWritable, Text, Text, IntWritable> {
@Override
protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
String s = value.toString();
String[] split = s.split(" "); //文章中的单词之间是以空格分开的
for (String i : split) {
context.write(new Text(i), new IntWritable(1));
}
}
}
//reduce阶段
public static class MyReducer extends Reducer<Text, IntWritable, Text, IntWritable> {
@Override
protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
int sum = 0;
for (IntWritable i : values) {
sum += i.get();
}
context.write(key, new IntWritable(sum));
}
}
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
System.setProperty("HADOOP_USE_NAME", "root");
conf.set("mapred.jar", "D:\\maven\\target\\maven-1.0-SNAPSHOT.jar");
Job job = Job.getInstance(conf);
job.setJarByClass(wordCount.class);
job.setMapperClass(MyMapper.class);
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(IntWritable.class);
job.setReducerClass(MyReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
job.waitForCompletion(true);
System.out.println("********************");
}
}
- 将打包好的
maven-1.0-SNAPSHOT.jar
文件复制到虚拟机里面,自己找个空闲的文件夹,例如我的放到/root/tmp/
下面 - 创建一个文件,文件名为
1
,在里面写上一些单词,空格隔开,保存退出 - 将文件
1
上传到Hadoop
集群上,我放到的是根
下 - 使用
maven-1.0-SNAPSHOT.jar
jar包运行,分析文件1
中每个单词出现的次数,并保存
hadoop jar maven-1.0-SNAPSHOT.jar wordCount /1 /11
maven-1.0-SNAPSHOT.jar
为jar包
wordCount
为鼠标在IDEA中选取wordCount
右键点击Copy Reference
复制的内容,并非类名或者文件名
/1
为集群中文件1
的位置
/11
为结果保存目录,尽量该目录不存在,防止报错
- 将结果下载下来,
/11/part-r-00000
为结果文件
hadoop fs -get /11/part-r-00000 ./
- 查看结果
八、Linux下配置MySQL数据库、Zookeeper和Hive
Zookeeper官网下载:
https://zookeeper.apache.org/releases.html#download>
Hive官网下载:
https://dlcdn.apache.org
或者
百度网盘下载:
https://pan.baidu.com/s/15NYeooKCn_cK2XcMTDaYkw?pwd=LJH1
-
将三个压缩包放到
/home
下解压,我是把mysql的压缩包放到/home/mysql
里面解压的,解压完我修改了一下文件名,如下图: -
卸载
mariadb
查看mariadb
安装版本:rpm -qa | grep -i mariadb
如果有的话,用命令删除:rpm -ev --nodeps 软件名称
-
安装MySQL
按照common–>libs–>client–>server
的顺序安装,否则安装过程会提醒依赖顺序,其他的为非必须安装包
进入解压好的mysql目录下,依次输入以下命令安装:
rpm -ivh ./mysql-community-common-8.0.16-2.el7.x86_64.rpm
rpm -ivh ./mysql-community-libs-8.0.16-2.el7.x86_64.rpm
rpm -ivh ./mysql-community-libs-compat-8.0.16-2.el7.x86_64.rpm
rpm -ivh ./mysql-community-client-8.0.16-2.el7.x86_64.rpm
rmp -ivh ./mysql-community-server-8.0.16-2.el7.x86_64.rpm
-
启动MySQL
systemctl start mysqld
-
查看状态
systemctl status mysqld
-
查看初始随机密码
cat /var/log/mysqld.log | grep password
例如:我的初始密码为
gdtV-2hFvkOA
- 使用root 角色登录
mysql -u root -p
,输入上面的初始密码进行登录 - 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'admin';
在安装MySQL8.0时,修改临时密码,因密码过于简单(如:123456),不符合MySQL密码规范,会触发一个报错信息:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements.
- 解决办法:调整MySQL密码验证规则,修改
policy
和length
的值:
set global validate_password.policy=LOW;
set global validate_password.length=5;
- 开放远程登录权限,依次执行如下命令
use mysql;
select host,user from user;
update user set host='%' where user ='root';
- 刷新
flush privileges;
- 就可以用工具进行连接啦,在这我就不演示了
- 设置开机自启
vim /etc/rc.local
在文件中添加service mysqld start
即可 MySQL
到此就算配置完成了,接下来就是Hive
,进入当解压的hive-2.3.7\conf
目录下- 将
hive-default.xml.template
重命名为hive-site.xml
vim hive-site.xml
进入文件里面修改文件,将<configuration>
标签里面的内容全部删除掉,再复制粘贴以下代码到<configuration>
标签里面
注意:把IP修改成自己第一台主机的IP,root密码也修改成自己MySQL的root的密码
<property>
<name>hive.metastore.warehouse.dir</name>
<value>hdfs://192.168.12.128:9000/hive/data</value>
</property>
<property>
<name>hive.exec.scratchdir</name>
<value>hdfs://192.168.12.128:9000/hive/tmp</value>
</property>
<property>
<name>hive.querylog.location</name>
<value>hdfs://192.168.12.128:9000/hive/log</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.12.128:3306/hive?useSSL=false&allowPublicKeyRetrieval=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>admin</value>
</property>
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<property>
<name>datanucleus.metadata.validate</name>
<value>false</value>
</property>
<property>
<name>datanucleus.schema.autoCreateAll</name>
<value>true</value>
</property>
- 下载下面的jar包,将下载好的jar这个包放到
/home/hive-2.3.7/lib/
目录下就可以了
mysql-connector-java-8.0.28:
https://pan.baidu.com/s/1WA8hJcjiFsIrPTmUyNDRBA?pwd=LJH1
Hive
配置完成还差一步配置环境变量,接下来和Zookeeper
一起配置- 配置之前,先在
/
下创建一个zk
目录,然后再zk
目录下创建一个myid
的文件,vim
打开编辑此文件,写入1
,保存退出 vim /etc/profile
,添加以下两行,修改一行,前两行是增加的,最后一行是修改的,找到对应位置修改
export ZOOKEEPER_HOME=/home/zookeeper-3.8.0
export HIVE_HOME=/home/hive-2.3.7
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/bin:$HIVE_HOME/bin:$PATH
source /etc/profile
是环境生效scp
将Zookeeper和Hive进行分发给后两台机子
scp -r /home/zookeeper-3.8.0 hadoop1:/home/
scp -r /home/zookeeper-3.8.0 hadoop2:/home/
scp -r /home/hive-2.3.7 hadoop1:/home/
scp -r /home/hive-2.3.7 hadoop2:/home/
scp -r /zk hadoop1:/
scp -r /zk hadoop2:/
scp -r /etc/profile hadoop1:/etc/profile
scp -r /etc/profile hadoop2:/etc/profile
- 在后两台机子中分别
vim /zk/myid
,将里面的值分别修改成2
,3
,保存退出,在source /etc/profile
是环境变量生效 - 在三台机子分别输入
zkServer.sh start
,都输入完后在分别输入zkServer.sh status
完结撒花
后面在持续更新中,请耐心等待……若超过半年没更新就是完结啦
若有侵权,请联系我
觉得文章可以的请点点关注,点点赞