IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 唐诗三百首出现最多的字是什么?大数据分析告诉你 -> 正文阅读

[大数据]唐诗三百首出现最多的字是什么?大数据分析告诉你

一个人要是长时间一直做一件事,思维容易固化。

就像那些从太空回来的宇航员,吃饭时容易丢开拿在手里的勺子。当勺子掉在地上时,哦,我已经回到地球了^_^。

所以,适当尝试新鲜事物,既是对大脑的放松,也是开阔思路的好机会,好方法。

那这次,博主尝试的新事物是什么呢?我们知道,大、物、移、智、云是近些年比较火的技术,具体来讲就是大数据、物联网、移动5G、人工智能、云计算。每一个都显得高大上。

所以,博主决定在其中选择一个来学习学习。其实,这些技术并不是割裂的,而是有内在的本质联系的,具体可参考博主的另一篇博文

一文将大数据、云计算、物联网、5G(移动网)、人工智能等最新技术串起来_wwwyuewww的专栏-CSDN博客

那么,选择哪一个方向来尝试一下呢?

这不,一年一度的诗词大会又开始了。

?

现在人工智能技术非常火,很多人就想着,要是让AI来写诗,会是什么样的。还有人真的做了这件事。

这里,博主就不尝试那么复杂的了,能力和时间都不允许。我们来个简单的,选择大数据方向,来分析分析唐诗三百首里,各个汉字出现的频率。

需要补充说明一下,就唐诗三百首而言,说实话,还不至于用大数据技术,简单写个程序就可以搞定。但是,如果有更多的数据,那么使用大数据技术,还是可以提升效率的。

好了,闲话少说,我们简单看看怎么做。我们使用Hadoop完成数据分析。

整个过程分为三个部分

第一部分?先作为分布式文件系统来使用

1 下载安装Hadoop。这里,我用了老版本2.8
? 因为Hadoop依赖Java,需要准备Java环境,导出Java环境变量

? 解压Hadoop安装包,然后在/etc/profile文件中导出Hadoop环境变量

? 同时,在Hadoop env中也导出Java环境变量

2 按照官方示例,格式化分布式文件系统,启动HDFS

Hadoop namenode -format
hdfs namenode -format

上述两个命令都可以,不过后续都推荐第二个命令
关停之前的服务
stop dfs ?和yarn?
??
重启服务
start dfs 和 yarn
使用jps命令查看java进程
23232 Jps
20977 ResourceManager
20373 NameNode
20806 SecondaryNameNode
21147 NodeManager
20571 DataNode

? 为啥要查看java进程呢,因为一个基本的Hadoop集群中的节点主要有:
? NameNode:负责协调集群中的数据存储
? DataNode:存储被拆分的数据块
? JobTracker:协调数据计算任务
? TaskTracker:负责执行由JobTracker指派的任务
? SecondaryNameNode:帮助NameNode收集文件系统运行的状态信息

? 要确定上述关键节点进程成功运行,否则,不利于后续错误的排除判断:倒地是程序问题还是环境问题。所以,最好检查一下。
??
? 实际中,发现缺少DataNode,将java JDK版本从10切换到8

? 删除/root/hadoop目录下的日志和临时文件(目录由配置文件中指定),重新启动服务,问题解决

? 但也有说《重新格式化名称节点之前需要清空DFS下的名称和数据文件夹以解决数据节点无法启动的问题。》可能不是JDK版本的问题
??
? 相对之前输出,也没有an illegal错误提示了,这个应该是java版本的原因

? 但是还是仍然有如下错误

WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

? 其实把native目录下的库拷贝到上一层lib目录下,即可通过检测

? 但是会提示snappy库没有,这个需要下载源代码,编译安装

3 用命令方式,测试HDFS文件系统

查看目录
Hadoop fs -ls /
创建一个新的目录,创建后可以在web界面查看当前操作的结果。web界面的端口为50070
hdfs dfs -mkdir /user

? 对于文件系统操作命令,可以用Hadoop fs 和hdfs dfs两个命令,根据网上资料,第一个命令可以操作更多格式的文件系统,不止hdfs文件系统
??
? 命令的基本使用可以这样理解,将Hadoop fs看做一个整体,带选项,比如 -ls -mkdir等,然后指定操作目录即可。

? 注意,这里的目录是针对的hdfs分布式文件系统,不是电脑本地目录

本地和hdfs文件系统中文件相互拷贝命令选项如下:
[-copyFromLocal [-f] [-p] [-l] [-d] <localsrc> ... <dst>]
[-copyToLocal [-f] [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]

第二部分,作为数据分析平台使用

4 执行一个MapReduce任务

? 创建一个input 和output 文件目录
? 将Hadoop配置文件拷贝到input目录,作为分析的源文件
? 执行grep 任务

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar grep /user/input /user/output 'dfs[a-z.]+'

? 提示无法连接8032端口
??
? 修改yarn的配置文件,增加如下内容,

<property> ?
? <name>yarn.resourcemanager.address</name> ?
? <value>master:8032</value> ?
</property> ?
<property> ?
? <name>yarn.resourcemanager.scheduler.address</name> ?
? <value>master:8030</value> ?
</property> ?
<property> ?
? <name>yarn.resourcemanager.resource-tracker.address</name> ?
? <value>master:8031</value> ?
</property>

? 提示无法连接master:8032,意思貌似无法解析该地址
? 修改配置文件,将master替换为localhost
? 再次执行任务,提示
? mapreduce.Job: Task Id : attempt_1578829933099_0001_m_000005_0, Status : FAILED
??
? 该问题同样在java版本退回到JDK8后未再出现,map-reduce任务通过。之前许多错误可能是java版本不兼容导致。
??
? 通过8088端口可以查看这类任务的执行情况及执行日志
??
? 第一次执行提示output目录已存在错误,修改为

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar grep /user/input /user/output/grepresult 'dfs[a-z.]+'

? 执行成功。将执行结果拷贝到本地

hdfs dfs -copyToLocal /user/output/ test/

? 查看本地中的执行结果,跟在本地单独执行命令检查,结果基本一致

root@ubuntu:/home/work/hadoop-2.8.5/test/output/grepresult# cat part-r-00000?
? 1 ? ? ? dfs.replication
? 1 ? ? ? dfs.permissions
? 1 ? ? ? dfs.name.dir
? 1 ? ? ? dfs.data.dir

? 本地单独命令执行结果

root@ubuntu:/home/work/hadoop-2.8.5/etc/hadoop# cat hdfs-site.xml | grep dfs[a-z.]
  <name>dfs.name.dir</name>
  <name>dfs.data.dir</name>
  <name>dfs.replication</name>
  <name>dfs.permissions</name>

第三部分,通过Java编程,使用Hadoop提供的接口,执行MapReduce任务,完成古诗分析

5 编写MapReduce任务,分析古诗

??现在可以编写程序,来进行分析统计了。程序很简单,读入古诗的每一个字符,然后统计它们出现的频率。

? 我们使用Windows环境的idea来编辑和编译Java库。

? 参考网上的例子,主要有三个文件,分别是WordCountDriver.java,WordCountMapper.java以及WordCountReducer.java。


? 第一个是框架文件,将后两个管理起来,第二是做Map操作,第三个是做Reduce操作。

? 具体统计操作写的很简陋,没有做过多的处理。

? 最后编译生成一个jar库HadoopApi.jar。
??
6 上传待分析古诗文件

? 我们将从网络下载的含有唐诗三百首的文本文件传到HDFS中。古诗格式如下图所示。


7 执行分析程序,进行分析

hadoop jar /home/share/com/HadoopApi.jar com.xxx.hadoop.Test.WordCountDriver

8 将分析结果从Hadoop的分布式文件系统中拷贝出来

? 分析结果是一个文本文件,打开可以看到如下图所示


??
? 如前所述,这里没有对结果排序。所以,对这个数据,还需要再处理一次。

? 我们将数据拷贝到Excel中,进行一下排序,结果就出来了,如下图所示:

??
? 可以看到,最高频字是“不”,其次是“人”,再次是“山”。有没有出乎你的意料?

? 如果我们统计所有的古诗,就可以得到古人写诗最喜欢用的字了。
??
后记:

不得不说,兴趣才是最好的老师。当你想要做感兴趣的事情时,主动学习就不是什么困难的事情了。
??
?
??

?

?

?

?

?

?


?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-12 17:36:19  更:2022-03-12 17:36:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:02:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码