Hadoop集群搭建—完整版……持续更新

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

  1. 鼠标右击【VMware16.0】选择【解压到VMware16.0】在这里插入图片描述
  2. 打开解压后的文件夹,鼠标右击【VMware-workstation-full-16.0.0-16894299】选择【以管理员身份运行】在这里插入图片描述
  3. 点击【下一步】在这里插入图片描述
  4. 勾选【我接受许可协议中的条款】,点击【下一步】在这里插入图片描述
  5. 点击【更改…】在这里插入图片描述
  6. 修改“文件夹名称”路径地址中的C可更改安装位置(我这里将C改为D表示安装在D盘),点击【确定】在这里插入图片描述
  7. 点击【下一步】在这里插入图片描述
  8. 取消勾选【启动时检查……】和【加入VMware……】,点击【下一步】在这里插入图片描述
  9. 点击【下一步】在这里插入图片描述
  10. 点击【安装】 在这里插入图片描述
  11. 软件安装中……在这里插入图片描述
  12. 点击【许可证】在这里插入图片描述
  13. 打开解压后的文件夹中的key.txt文件,复制任意一行粘贴到许可证里面,点击【输入】在这里插入图片描述
  14. 安装完成,点击【完成】,并重启电脑在这里插入图片描述
  15. 双击桌面【VMware Workstation Pro】图标启动软件在这里插入图片描述
  16. 安装成功在这里插入图片描述

二、CentOS7下载及安装

CentOS7官网下载https://www.centos.org/download
或者
百度网盘下载https://pan.baidu.com/s/1f-P85vORzecgaDqapdtO6g?pwd=LJH1

  1. 在桌面找到“VMware WorkstationPro”,双击打开在这里插入图片描述

  2. 点击“创建新的虚拟机”在这里插入图片描述

  3. 选择“典型”,点击“下一步”在这里插入图片描述

  4. 选择“稍后安装操作系统”,点击“下一步”在这里插入图片描述

  5. 选择“Linux”,版本选择“CentOS 7 64位”,点击“下一步”在这里插入图片描述

  6. 虚拟机名称输入“Hadoop”,点击“浏览”更改系统的安装位置,点击“下一步”在这里插入图片描述

  7. 点击“下一步”在这里插入图片描述

  8. 点击“自定义硬件”在这里插入图片描述

  9. 选择内存,建议大小“2GB”在这里插入图片描述

  10. 选择“新CD/DVD(SATA)”后选择“使用ISO镜像文件”,点击“浏览”找到并选择解压后“CentOS 7”文件夹里面的“CentOS-sever-7.0”这个镜像 在这里插入图片描述

  11. 点击“网络适配器”,网络连接选择“NAT 模式”在这里插入图片描述

  12. 点击“关闭”在这里插入图片描述

  13. 点击“完成”在这里插入图片描述

  14. 选中“Hadoop”,点击“开启此虚拟机”在这里插入图片描述

  15. 用键盘上的上下箭头,选择“InstallCentOS7”在这里插入图片描述

  16. 正在加载镜像在这里插入图片描述

  17. 选择“English”,点击“Continue”在这里插入图片描述

  18. 点击“DATE & TIME”在这里插入图片描述

  19. 点击地图上的中国地图在这里插入图片描述

  20. 点击”Done“在这里插入图片描述

  21. 点击”SOFTWARE SELECTION“在这里插入图片描述

  22. 选择“Service with GUI”,点击“Done”在这里插入图片描述

  23. 点击“INSTALLATION DESTINATION”在这里插入图片描述

  24. 点击”Other Storage Options“下的”Partitioning“中的”I will configure partitioning“在这里插入图片描述

  25. 点击“Done”在这里插入图片描述

  26. 点击“+”在这里插入图片描述

  27. “Mount Point”选择“swap”,“Desired Capacity”输入“4GB”,再点击“Add mount point”在这里插入图片描述

  28. 再点击“+”在这里插入图片描述

  29. “Mount Point”选择“/boot”,“Desired Capacity”输入“512mb”,再点击“Add mount point”在这里插入图片描述

  30. 再次点击“+”在这里插入图片描述

  31. “Mount Point”选择“/”,“Desired Capacity”不用输入,点击“Add mount point”在这里插入图片描述

  32. 点击“Done”在这里插入图片描述

  33. 点击“Accept Changes”在这里插入图片描述

  34. 点击“Begin Installation”在这里插入图片描述

  35. 点击“ROOT PASSWORD”在这里插入图片描述

  36. 输入Root密码,然后点击“Done”,温馨提示:如果输入的密码较弱需要点击两次“Done”在这里插入图片描述

  37. 点击“CREATE USER”在这里插入图片描述

  38. 输入Full name,User name,Password,Confim password,然后点击“Done”,温馨提示:如果输入的密码较弱需要点击两次“Done”在这里插入图片描述

  39. CentOS7安装中,等待安装在这里插入图片描述

  40. 安装完成,点击“Reboot”在这里插入图片描述

  41. 重启后不要有任何操作

  42. 点击“LICENSE INFORMATION”在这里插入图片描述

  43. 勾选“I accept the license agreement”,点击“Done”在这里插入图片描述

  44. 点击“FINSH CONFIGURATION”在这里插入图片描述

  45. 点击“Not listed?”在这里插入图片描述

  46. 在“Username”中输入“root”,点击“Next”
    在这里插入图片描述

  47. 在“Password”中输入root密码,点击“Sign In”在这里插入图片描述

  48. 点击“Next”在这里插入图片描述

  49. 点击“Next”在这里插入图片描述

  50. 点击“Next”在这里插入图片描述

  51. 点击“Skip”在这里插入图片描述

  52. 点击“Start using CentOS Linux”在这里插入图片描述

  53. 点击“x”在这里插入图片描述

  54. CentOS7安装完成

三、Hadoop集群的搭建

A、配置静态IP

  1. root用户下,桌面右键,点击Open Terminal,打开终端在这里插入图片描述

  2. 输入ifconfig查看默认的动态IP,记住动态IP在这里插入图片描述

  3. 输入vim /etc/sysconfig/network-scripts/ifcfg-ens33进入网络配置文件在这里插入图片描述

  4. i键进入编辑模式(vim的命令只说一遍,不会可以问度娘)
    BOOTPROTO这行修改成BOOTPROTO=static
    ONBOOT这行修改成ONBOOT=yes
    然后在最下面添加5行
    IPADDR为本机IP地址,输入刚查的动态IP
    NETMASK为子网掩码,基本都是255.255.255.0
    GATEWAY为网关地址,跟IP一样,把末尾改成2
    DNS1DNS2都为域名服务器
    DNS1设置为本机局域网域名服务器,跟IP一样,把末尾改成1
    DNS2设置为网络域名服务器,可设为8.8.8.8
    在这里插入图片描述

  5. Esc键进入命令模式
    :键进入末行模式,输入wq或者wq!,按Enter键保存退出在这里插入图片描述

  6. 输入service network restart重启网卡在这里插入图片描述

  7. 再次输入ifcongif查看网路配置在这里插入图片描述

  8. 查看防火墙firewall-cmd --state在这里插入图片描述

  9. 关闭防火墙systemctl stop firewall.service在这里插入图片描述

  10. 关闭防火墙开机自启systemctl disable firewalld.service在这里插入图片描述

B、创建共享文件夹

  1. 在VM菜单栏点击虚拟机中的设置在这里插入图片描述

  2. 点击选项下的共享文件夹,选择总是启用,点击添加添加win下面的一个文件夹作为共享文件夹,点击确定在这里插入图片描述

  3. 在终端输入vmware-hgfsclient查看共享文件夹情况在这里插入图片描述

  4. /mnt目录下创建/hgfs,再在/hgfs目录下创建共享文件夹目录,指令mkdir -p /mnt/hgfs/LJHshared,LJHshared为共享文件夹名在这里插入图片描述

  5. vim 打开 /etc/fstab 文件,添加如下内容

.host:/LJHshared /mnt/hgfs/LJHshared fuse.vmhgfs-fuse allow_other,defaults 0 0

host:/LJHshared为设置的共享目录名称
/mnt/hgfs/LJHshared为挂载位置

  1. 完成上面步骤后,在终端输入命令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

  1. 将下载好的两个文件放到共享文件夹中在这里插入图片描述

  2. 进入Linux系统终端的共享文件夹中查看
    在这里插入图片描述

  3. 将两个文件复制粘贴到/home在这里插入图片描述

  4. /home下查看在这里插入图片描述

  5. 解压这两个文件
    tar -zxvf hadoop-2.6.5.tar.gz
    tar -zxvf jdk-8u161-linux-x64.tar.gz 在这里插入图片描述在这里插入图片描述

  6. 查看解压后的文件
    在这里插入图片描述

  7. 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

在这里插入图片描述

  1. 输入source /etc/profile使环境变量生效在这里插入图片描述

  2. 输入java -version查看Java版本即Java是否配置完成在这里插入图片描述

  3. 输入hadoop version查看Hadoop版本即Hadoop是否配置完成在这里插入图片描述

D、通过Hadoop的克隆生成Hadoop1Hadoop2

  1. vim进入/etc/hostname文件,将里面内容清空,再写上本台虚拟机名Hadoop,保存退出在这里插入图片描述
    在这里插入图片描述

  2. vim进入/etc/hosts文件,将里面的内容清空,写上以下代码,保存退出

192.168.12.128 Hadoop
192.168.12.129 Hadoop1
192.168.12.130 Hadoop2
前面为每台虚拟机的IP,后面为主机名
后两行是咱们等会克隆后,修改的IP和主机名

在这里插入图片描述
在这里插入图片描述

  1. 关闭虚拟机在这里插入图片描述
    在这里插入图片描述

  2. 在VM虚拟机页面的最左边里面右键Hadoop->管理,选择克隆在这里插入图片描述

  3. 点击“下一页”在这里插入图片描述

  4. 选择“虚拟机中的当前状态”,点击“下一页”在这里插入图片描述

  5. 选择“创建完整克隆”,点击“下一页”在这里插入图片描述

  6. 更改虚拟机名称,点击“浏览”,更改克隆到的位置,点击“完成”在这里插入图片描述

  7. 正在克隆在这里插入图片描述

  8. 克隆完成,点击“关闭”在这里插入图片描述

  9. 点击“开启虚拟机",打开刚克隆完成的虚拟机在这里插入图片描述

  10. 使用root登录,登陆进去后打开终端,vim打开/etc/hostname文件,将里面的主机名,Hadoop修改成Hadoop1,保存退出
    (这里的主机名要和/etc/hosts文件里面内容对应上)
    在这里插入图片描述

  11. 输入vim /etc/sysconfig/network-scripts/ifcfg-ens33进入网络配置文件,修改里面的IP地址,将IPADDR的值修改成Hadoop1的IP地址192.168.12.129
    (这里的IP要和/etc/hosts文件里面内容对应上)在这里插入图片描述

  12. 重复克隆,修改主机名和IP地址,克隆出Hadoop2
    在这里步骤就省略啦!步骤参考通过Hadoop克隆出Hadoop1的步骤

  13. 全部克隆完成后,Hadoop,Hadoop1,Hadoop2,同时都能打开就没问题了

E、使用命令终端工具MobaXterm连接

推荐使用MobaXterm
相对来说,MobaXterm比Xshell和SecureCRT都好用,功能还多

MobaXterm官网下载:
https://mobaxterm.mobatek.net/download.html

  1. 将下载好的压缩包解压, 打开解压后的文件夹在这里插入图片描述

  2. 鼠标右击MobaXterm_installer_22.0.msi.exe,选择”以管理员方式打开“在这里插入图片描述

  3. 点击Next在这里插入图片描述

  4. 点击I accept the terms in the License Agreement,再点击Next在这里插入图片描述

  5. 点击Change...修改安装路径,再点击Next在这里插入图片描述

  6. 点击Install在这里插入图片描述

  7. 点击Finish在这里插入图片描述

  8. 在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
  1. 打开MobaXterm在这里插入图片描述

  2. 进入使用界面,选择 Session -> SSH在这里插入图片描述

  3. 填写需要连接的远程主机 IP 和 用户名 (一直使用root登录)在这里插入图片描述

  4. 点击 OK,进入到远程机器的密码输入页面,输入主机的正确登录密码在这里插入图片描述

  5. 选择Yes,即可保存密码,以后访问该主机,不用每次再输入主机密码在这里插入图片描述

  6. 至此,即可操作远程的主机,进行相应的工作在这里插入图片描述

  7. 重复以上步骤,添加连接后两台主机

F、修改Hadoop下的配置文件并启动集群

  1. cd/home/hadoop-2.6.5/etc/hadoop/目录下,ls查看在这里插入图片描述
  2. 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>

  1. 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>

  1. 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>

  1. vim进入slaves文件进行修改,将里面内容清空修改成如下代码,保存退出
Hadoop
Hadoop1
Hadoop2
  1. 把配置好的文件分发到另两台主机,目前还在/home/hadoop-2.6.5/etc/hadoop下,cd ../回到上一级目录/home/hadoop-2.6.5/etc进行操作
scp -r ./hadoop hadoop1: `pwd`
scp -r ./hadoop hadoop2: `pwd`
  1. 分完完成之后,首次启动集群,必须进行格式化操作(一次即可)
hadoop namenode -format
  1. 启动集群:start-all.sh
    在这里插入图片描述
  2. 停止集群 :stop-dfs.shstop-yarn.sh

在这里我就不演示停止集群命令了,后面还要保持集群在启动状态下

  1. 每一台主机下输入jps查看集群进程在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  2. 在win下打开浏览器,最上面搜索栏输入192.168.12.128:50070,前面为第一台主机IP,后面为端口号在这里插入图片描述

  3. 能打开这个网页说明集群没问题

在这里插入图片描述

四、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

  1. 解压下载好的两个压缩包,解压后打开文件夹在这里插入图片描述
    在这里插入图片描述

  2. 右击jdk-8u333-windows-x64.exe以管理员方式打开

  3. 点击下一步在这里插入图片描述

  4. 这里可以修改jdk安装路径,建议不要动,默认安装比较好点,点击下一步在这里插入图片描述

  5. jdk安装中在这里插入图片描述

  6. 这里可以修改jre安装路径,建议不要动,默认安装比较好点,点击下一步在这里插入图片描述

  7. jre安装中在这里插入图片描述

  8. 安装完成,点击关闭在这里插入图片描述

  9. 右击Win任务栏中的开始图标,点击系统,我这是win11,win10跟win11也差不多一样在这里插入图片描述

  10. 点击高级系统设置在这里插入图片描述

  11. 点击环境变量在这里插入图片描述

  12. 系统变量下面 点击新建在这里插入图片描述

  13. 变量名中输入JAVA_HOME在这里插入图片描述

  14. 点击浏览目录,找到jdk安装的路径,点击确定在这里插入图片描述

  15. 将变量值中的路径中的Program File改成PROGRA~1,防止后面在cmd中报错,点击确定在这里插入图片描述

  16. 在系统变量中找到PATH,双击打开在这里插入图片描述

  17. 点击新建,输入%JAVA_HOME%\bin,点击上移动把这行移动到最上面,再点击确定在这里插入图片描述

  18. 点击确定在这里插入图片描述

  19. 将刚打开的Hadoop的文件夹中的整个hadoop-2.8.4文件夹复制,目录切换到C:\Program Files文件夹下,鼠标右键新建文件夹,重命名为Hadoop,打开到Hadoop文件夹内,粘贴刚复制的hadoop-2.8.4文件夹在这里插入图片描述

  20. 打开系统属性中的环境变量在这里插入图片描述

  21. 跟刚才配置Java一样,配置Hadoop环境变量在这里插入图片描述

  22. 双击打开PATH,添加这两行,添加完后点击确定在这里插入图片描述

  23. 点击确定在这里插入图片描述

  24. Win+R键打开运行,输入cmd,点击确定在这里插入图片描述

  25. 输入java -version查看Java版本在这里插入图片描述

  26. 输入hadoop version查看Hadoop版本在这里插入图片描述

  27. 以上就说明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

  1. 将下载好的压缩包解压并打开在这里插入图片描述

  2. 将文件夹中的整个apache-maven-3.6.0文件夹复制,目录切换到C:\Program Files文件夹下,鼠标右键新建文件夹,重命名为Maven,打开到Maven文件夹内,粘贴刚复制的apache-maven-3.6.0文件夹在这里插入图片描述

  3. 打开系统属性中的环境变量在这里插入图片描述

  4. 跟刚才配置Java一样,配置Maven环境变量
    这里的Program File可修改成PROGRA~1,也可以不用修改
    在这里插入图片描述

  5. 双击PATH,添加这一行,添加完后点击确定在这里插入图片描述

  6. 点击确定
    在这里插入图片描述

  7. 点击确定
    在这里插入图片描述

  8. 选择一个比较大的盘,里面新建一个文件夹,重命名为repository,复制路径在这里插入图片描述

  9. 打开刚安装好的Maven目录下,进入conf目录下,找到setting.xml文件右键->打开方式->记事本方式打开在这里插入图片描述

  10. 找到图片位置在这里插入图片描述
    10.再下面添加一行,一定是在-->的后面添加 ,localRepository标签里面是本地仓库路径

<localRepository>D:/repository</localRepository>

在这里插入图片描述

  1. 继续往下找,找到图片位置在这里插入图片描述
  2. 在下面添加这几行,这是引用阿里云的镜像
<mirror>
	<id>aliyunmaven</id>
	<mirrorOf>*</mirrorOf>
	<name>Nexus aliyun</name>
	<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

在这里插入图片描述

  1. 继续往下找,找到图片位置在这里插入图片描述
  2. 在下面添加这几行,这是添加的是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>

在这里插入图片描述

  1. 保存退出在这里插入图片描述

  2. Win+R键打开运行,输入cmd,点击确定在这里插入图片描述

  3. 输入mvn -version查看Maven版本在这里插入图片描述

  4. 以上说明Maven配置成功

六、Win下安装IDEA及使用IDEA创建Maven项目

IDEA官网下载:
https://www.jetbrains.com/idea/downloadi
或者
百度网盘下载:
https://pan.baidu.com/s/1o-l7qEenZdqZsHHgBcx7jw?pwd=LJH1

IDEA安装步骤百度网盘压缩包里有,在这我就省略了

  1. 打开IDEA,点击Create New Project在这里插入图片描述
  2. 选择Maven项目,选择你的Java版本,勾选Create from archetype,找到选择下面的’maven-archetype-quickstart’,点击Next在这里插入图片描述
  3. 输入你的项目名称和本地保存路径,点击Next在这里插入图片描述
  4. 选择你的maven安装路径,后面两个打对勾,选择你刚修改的maven\conf\setting.xml配置文件路径,再选择你的本地仓库路径,点击Finish在这里插入图片描述
  5. 等待一会,加载完成后,修改配置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>

在这里插入图片描述

  1. 点击右下方的Import Changes,该步骤可能花费时间较长,请耐心等待在这里插入图片描述
  2. 完成后,在左边文件目录里main下新建一个文件夹,命名为resources在这里插入图片描述
  3. 将虚拟机里面/home/hadoop-2.6.5/etc/hadoop目录下的core-site.xmldfs-site.xmlmapred-site.xmlyarn-site.xmllog4j.properties这五个文件复制到共享文件夹下,再复制粘贴到resources里面在这里插入图片描述
  4. 双击打开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包实现

  1. java下创建一个java class类,命名为wordCount在这里插入图片描述
  2. 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));
            }
        }
    }
  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));
        }
    }
  1. 写入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("********************");
    }
  1. 别忘了引入所需要的库,全部代码如下
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("********************");
    }
}
  1. 将打包好的maven-1.0-SNAPSHOT.jar文件复制到虚拟机里面,自己找个空闲的文件夹,例如我的放到/root/tmp/下面在这里插入图片描述
  2. 创建一个文件,文件名为1,在里面写上一些单词,空格隔开,保存退出在这里插入图片描述
  3. 将文件1上传到Hadoop集群上,我放到的是在这里插入图片描述
  4. 使用maven-1.0-SNAPSHOT.jarjar包运行,分析文件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为结果保存目录,尽量该目录不存在,防止报错

  1. 将结果下载下来,/11/part-r-00000为结果文件
hadoop fs -get /11/part-r-00000 ./

在这里插入图片描述

  1. 查看结果
    在这里插入图片描述

八、Linux下配置MySQL数据库、Zookeeper和Hive

MySQL官网下载
https://downloads.mysql.com/archives/community
在这里插入图片描述

Zookeeper官网下载:
https://zookeeper.apache.org/releases.html#download>
Hive官网下载:
https://dlcdn.apache.org
或者
百度网盘下载:
https://pan.baidu.com/s/15NYeooKCn_cK2XcMTDaYkw?pwd=LJH1

  1. 将三个压缩包放到/home下解压,我是把mysql的压缩包放到/home/mysql里面解压的,解压完我修改了一下文件名,如下图:在这里插入图片描述在这里插入图片描述

  2. 卸载mariadb查看mariadb安装版本:rpm -qa | grep -i mariadb
    如果有的话,用命令删除:rpm -ev --nodeps 软件名称

  3. 安装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

  4. 启动MySQLsystemctl start mysqld

  5. 查看状态systemctl status mysqld在这里插入图片描述

  6. 查看初始随机密码cat /var/log/mysqld.log | grep password在这里插入图片描述

例如:我的初始密码为gdtV-2hFvkOA

  1. 使用root 角色登录mysql -u root -p,输入上面的初始密码进行登录
  2. 修改密码ALTER USER 'root'@'localhost' IDENTIFIED BY 'admin';
    在安装MySQL8.0时,修改临时密码,因密码过于简单(如:123456),不符合MySQL密码规范,会触发一个报错信息:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements.
  1. 解决办法:调整MySQL密码验证规则,修改 policy length 的值:
set global validate_password.policy=LOW;
set global validate_password.length=5;
  1. 开放远程登录权限,依次执行如下命令
use mysql;
select host,user from user;
update user set host='%' where user ='root';
  1. 刷新
flush privileges;
  1. 就可以用工具进行连接啦,在这我就不演示了
  2. 设置开机自启vim /etc/rc.local在文件中添加 service mysqld start即可
  3. MySQL到此就算配置完成了,接下来就是Hive,进入当解压的hive-2.3.7\conf 目录下在这里插入图片描述
  4. hive-default.xml.template重命名为hive-site.xml在这里插入图片描述
  5. 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&amp;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>
  1. 下载下面的jar包,将下载好的jar这个包放到/home/hive-2.3.7/lib/目录下就可以了

mysql-connector-java-8.0.28:
https://pan.baidu.com/s/1WA8hJcjiFsIrPTmUyNDRBA?pwd=LJH1

  1. Hive配置完成还差一步配置环境变量,接下来和Zookeeper一起配置
  2. 配置之前,先在/下创建一个zk目录,然后再zk目录下创建一个myid的文件,vim打开编辑此文件,写入1,保存退出
  3. 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

在这里插入图片描述

  1. source /etc/profile是环境生效
  2. 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
  1. 在后两台机子中分别vim /zk/myid,将里面的值分别修改成2,3,保存退出,在source /etc/profile是环境变量生效
  2. 在三台机子分别输入zkServer.sh start,都输入完后在分别输入zkServer.sh status

完结撒花

后面在持续更新中,请耐心等待……若超过半年没更新就是完结啦
若有侵权,请联系我
觉得文章可以的请点点关注,点点赞

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值