当前位置: 首页 > news >正文

展示型企业网站制作费用网页seo

展示型企业网站制作费用,网页seo,揭阳市住房和城乡建设局网站,安徽网站设计找哪家用户行为日志分析(pythonhadoopmapreduceyarnhive) 搭建完全分布式高可用大数据集群(VMwareCentOSFinalShell) 搭建完全分布式高可用大数据集群(HadoopMapReduceYarn) 本机PyCharm远程连接虚拟机Python …

用户行为日志分析(python+hadoop+mapreduce+yarn+hive)

  • 搭建完全分布式高可用大数据集群(VMware+CentOS+FinalShell)

  • 搭建完全分布式高可用大数据集群(Hadoop+MapReduce+Yarn)

  • 本机PyCharm远程连接虚拟机Python

  • 搭建完全分布式高可用大数据集群(MySQL+Hive)

  • 本机DataGrip远程连接虚拟机MySQL/Hive

在阅读本文前,请确保已经阅读过以上5篇文章,成功搭建了Hadoop+MapReduce+Yarn+Python+Hive的大数据集群环境。

写在前面

本文主要介绍基于mapreduce+hive技术,自己编写python代码实现用户行为日志分析的详细步骤。

  • 电脑系统:Windows

  • 技术需求:HadoopMapReduceYarnPython3.12.8Hive

  • 使用软件:VMwareFinalShellPyCharmDataGrip

注:本文的所有操作均在虚拟机master中进行,不涉及另外两台虚拟机。(但是要开机)

启动Hadoop

  1. 使用finalshell连接并启动masterslave01slave02三台虚拟机。

  2. 在虚拟机master的终端输入命令start-all.sh启动hadoop、mapreduce和yarn。

  3. 随后可以用命令jps查看是否成功启动集群。

00

启动历史服务器

  1. master的终端输入命令mr-jobhistory-daemon.sh start historyserver启动历史服务器。
  • 历史服务器可以在mapreduce出错时查看报错原因。
  • 如果不启动该历史服务器,则无法使用web页面(http://master:19888/jobhistory)查看mapreduce程序的运行状态。
  1. 输入jps查看历史服务器是否成功启动。

01

准备数据

  1. 创建文本数据

① 在虚拟机master的终端输入命令cd /data进入/data目录。

② 在虚拟机master的终端输入命令 vi logs.txt 创建并打开logs.txt文件,填入以下内容。

user1	2023-10-01 08:15:23	login
user2	2023-10-01 08:20:45	view_page
user1	2023-10-01 08:25:12	click_button
user3	2023-10-01 08:30:34	login
user2	2023-10-01 08:35:56	logout
user1	2023-10-01 08:40:11	view_page
user3	2023-10-01 08:45:22	click_button
user4	2023-10-01 08:50:33	login
user2	2023-10-01 08:55:44	view_page
user4	2023-10-01 09:00:55	logout

数据说明

  1. user_id: 用户唯一标识。
  2. log_time: 日志时间,格式为 YYYY-MM-DD HH:MM:SS
  3. action: 用户执行的操作,例如 loginlogoutview_pageclick_button 等。

数据示例

  • user12023-10-01 08:15:23 登录。
  • user22023-10-01 08:20:45 浏览页面。
  • user12023-10-01 08:25:12 点击按钮。
  • user32023-10-01 08:30:34 登录。
  • user22023-10-01 08:35:56 登出。
  • user12023-10-01 08:40:11 再次浏览页面。
  • user32023-10-01 08:45:22 点击按钮。
  • user42023-10-01 08:50:33 登录。
  • user22023-10-01 08:55:44 再次浏览页面。
  • user42023-10-01 09:00:55 登出。

02

03

  1. 创建目录

① 在终端输入以下命令,可以在HDFS中创建/userlogs/input目录,用于存放文件logs.txt

hdfs dfs -mkdir -p /userlogs/input

② 在终端输入以下命令验证是否创建/userlogs/input目录。

hdfs dfs -ls /

04

  1. 上传文件

① 在终端执行以下命令将文件logs.txt上传到HDFS的/userlogs/input目录。

hdfs dfs -put /data/logs.txt /userlogs/input

② 在终端输入以下命令验证是否成功将文件logs.txt上传到HDFS的/userlogs/input目录。

hdfs dfs -ls /userlogs/input

③ 可以使用以下命令查看上传的logs.txt文件的内容。

hdfs dfs -cat /userlogs/input/logs.txt

05

④ 也可以通过HDFS的Web UI(http://master:9870)查看文件logs.txt是否上传成功。

06

编写Python脚本

打开PyCharm专业版,远程连接虚拟机master,先创建一个文件夹userlogs,后在该文件夹中分别创建map.pyreduce.py两个脚本。

1. 编写mapper脚本map.py

map.py脚本中填入以下代码。

import sysfor line in sys.stdin:# 假设输入的每一行是Hive表中的一行数据user_id, log_time, action = line.strip().split('\t')# 输出 user_id 和 actionprint(f"{user_id}\t{action}")

这段代码是一个典型的 MapReduce Mapper 脚本,用 Python 编写,用于处理从 Hive 表或 HDFS 文件中读取的日志数据。,以下是对代码的详细分析。

  1. 读取输入数据

    • 通过 sys.stdin 逐行读取输入数据。输入数据通常来自 Hadoop Streaming 的输入文件(如 Hive 表导出文件或 HDFS 文件)。
    • 每行数据的格式为 user_id\tlog_time\taction,例如:user1\t2023-10-01 08:15:23\tlogin
  2. 数据解析

    • 使用 line.strip().split('\t') 对每行数据进行解析:
      • strip():去除行首尾的空白字符(如换行符)。
      • split('\t'):以制表符(\t)为分隔符,将行数据拆分为 user_idlog_timeaction 三个字段。
  3. 输出结果

    • 使用 print(f"{user_id}\t{action}") 输出 user_idaction,中间用制表符分隔。
    • 输出格式为 user_id\taction,例如:user1\tlogin

总的来说,这段代码是一个简单但功能明确的 Mapper 脚本,适用于从结构化日志数据中提取关键字段并生成中间结果。通过优化异常处理和性能,可以使其更加健壮和高效。

2. 编写reducer脚本reduce.py

reduce.py脚本中填入以下代码。

import sys
from collections import defaultdictaction_count = defaultdict(int)for line in sys.stdin:user_id, action = line.strip().split('\t')action_count[(user_id, action)] += 1for (user_id, action), count in action_count.items():print(f"{user_id}\t{action}\t{count}")

这段代码是一个典型的 MapReduce Reducer 脚本,用 Python 编写,用于对 Mapper 输出的中间结果进行聚合统计,以下是对代码的详细分析。

  1. 读取输入数据

    • 通过 sys.stdin 逐行读取 Mapper 输出的中间结果,每行数据的格式为 user_id\taction,例如:user1\tlogin
  2. 数据统计

    • 使用 defaultdict(int) 创建一个字典 action_count,用于统计每个 (user_id, action) 组合的出现次数。
    • 对每行数据解析后,将 (user_id, action) 作为键,累加其计数:action_count[(user_id, action)] += 1
  3. 输出结果

    • 遍历 action_count 字典,输出每个 (user_id, action) 组合及其出现次数,格式为 user_id\taction\tcount,例如:user1\tlogin\t3

这段代码是一个简单但功能明确的 Reducer 脚本,适用于对 Mapper 输出的中间结果进行聚合统计。通过优化异常处理和性能,可以使其更加健壮和高效。

运行MapReduce程序

  1. 查看mapreduce程序

进入虚拟机master/opt/hadoop/share/hadoop/tools/lib目录,在该目录下执行ls命令,查看hadoop提供的mapreduce程序。

07

其中,hadoop-streaming-3.3.6.jar是执行mapreduce的程序。

  1. 执行mapreduce程序

① 在终端输入命令cd /opt/python/code/userlogs进入存放map.pyreduce.py脚本的目录。

08

② 执行以下命令,统计logs.txt文件中的用户行为。

hadoop jar /opt/hadoop/share/hadoop/tools/lib/hadoop-streaming-3.3.6.jar -file map.py -file reduce.py -input /userlogs/input/logs.txt -output /userlogs/output -mapper "python map.py" -reducer "python reduce.py" 

注意: 在每次执行这个命令前,请确保/userlogs/outputoutput文件夹不在HDFS中,如果在,请删除。

③ 出现以下信息说明程序执行成功。

09

查看程序运行状态和结果

  1. MapReduce程序运行过程中,可以使用浏览器访问Web UI(http://master:8088)查看历史服务器。

10

  1. MapReduce程序运行结束后,可以在HDFS的Web UI(http://master:9870)查看用户行为日志的统计的结果。

11

  1. 当然,也可以在master的终端输入以下命令查看程序运行结果。
hdfs dfs -cat /userlogs/output/part-00000

12

注意: 如果在运行mapreduce程序时出现错误,可以使用浏览器访问Web UI(http://master:19888/jobhistory)查看历史服务器的logs文件。

13

将结果存入Hive

在虚拟机中启动Hive,打开DataGrip,远程连接虚拟机的hive。

① 启动hiveserver2服务:hive --service hiveserver2(第一个master终端)

② 启动beeline连接:beeline -u jdbc:hive2://master:10000 -n root(第三个master终端)

③ 使用DataGrip远程连接Hive

  1. 打开DataGripQuery Console,输入以下代码,创建一个名为userlogs的Hive表。
CREATE TABLE userlogs (uid STRING,action STRING,count INT
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t';

这段 SQL 语句用于在 Hive 中创建一个表 userlogs,让我们逐部分分析这段 SQL语句。

  • CREATE TABLE userlogs (...)

    • CREATE TABLE userlogs : 这部分表示创建一个名为 userlogs 的表。

    • (...) : 括号内定义了表的列名和数据类型。这里定义了 3 列。

  • 列定义

    • uid STRING : 第一列是 uid,数据类型是 STRING。这里假设存储的是用户标识符(如 user1user2 等)。STRING 类型可以存储任意文本数据。

    • action STRING : 第二列是 action,数据类型也是 STRING。它表示用户的操作类型(如 view_pageclick_buttonLogin 等)。

    • count INT : 第三列是 count,数据类型是 INT,表示操作的计数或频率(如 12 等)。

  • ROW FORMAT DELIMITED

    • 这部分表示数据的存储格式是 定界符分隔的 。在 Hive 中,ROW FORMAT DELIMITED 表示数据以某种字符(比如制表符、逗号等)分隔。
  • FIELDS TERMINATED BY '\t'

    • FIELDS TERMINATED BY '\t' : 这部分指定了字段之间使用制表符(\t)作为分隔符,也就是每列的值通过制表符分隔。这样,Hive 就知道如何解析存储在文件中的数据。

总的来说,这段 SQL 语句的功能是创建一个 userlogs 表,表中有三列:uid(用户标识符)、action(用户执行的操作)、count(操作次数)。每行数据的字段由制表符 \t 分隔,且表采用 定界符分隔 的存储格式。

这个表结构适用于存储类似于以下数据的记录:

user1	view_page	1
user1	click_button	1
user1	Login	1
user2	logout	1
user2	view_page	2
...

14

15

注意:该userlogs表默认创建在default数据库中。

  1. beeline命令行入以下命令,将mapreduce的输出加载到Hive的userlogs表中。
LOAD DATA INPATH '/userlogs/output/part-00000' INTO TABLE userlogs;

16

  1. 在DataGrip中查看uselogs数据表中的数据。

17

  1. beeline使用SELECT * FROM userlogs LIMIT 10;命令查看数据信息。

18

到此,成功将mapreduce的执行结果存入了hive的default数据库的userlogs数据表中。

注意事项

  • 执行LOAD DATA INPATH '/userlogs/output/part-00000' INTO TABLE userlogs;命令后,在HDFS中的part-00000文件将被移动至Hive中。

19

  • 启动HiveServer2服务后,可以访问Web UI(http://master:10002/)查看Hive信息。

20

写在后面

本文仅供学习使用,原创文章,请勿转载,谢谢配合。


文章转载自:
http://dinncotransom.zfyr.cn
http://dinncoshuffleboard.zfyr.cn
http://dinncodisaffected.zfyr.cn
http://dinncoamputate.zfyr.cn
http://dinncobobtail.zfyr.cn
http://dinncointerrogator.zfyr.cn
http://dinncoconcernedly.zfyr.cn
http://dinncoscaremonger.zfyr.cn
http://dinncoaortitis.zfyr.cn
http://dinncoeffraction.zfyr.cn
http://dinncoperivisceral.zfyr.cn
http://dinncopolyhedral.zfyr.cn
http://dinncoemblematical.zfyr.cn
http://dinncohyde.zfyr.cn
http://dinnconoonflower.zfyr.cn
http://dinncodisperse.zfyr.cn
http://dinncosapanwood.zfyr.cn
http://dinncomediate.zfyr.cn
http://dinncosemibreve.zfyr.cn
http://dinncolithophyl.zfyr.cn
http://dinncovichy.zfyr.cn
http://dinncopyrophile.zfyr.cn
http://dinncoreforge.zfyr.cn
http://dinncodelirious.zfyr.cn
http://dinncohaemocoele.zfyr.cn
http://dinncociminite.zfyr.cn
http://dinncoshf.zfyr.cn
http://dinncoindorsement.zfyr.cn
http://dinncohemiplegia.zfyr.cn
http://dinncosolleret.zfyr.cn
http://dinncoparageusia.zfyr.cn
http://dinncolino.zfyr.cn
http://dinncoreinforcement.zfyr.cn
http://dinncoimperceptible.zfyr.cn
http://dinncoflorigen.zfyr.cn
http://dinncoquebracho.zfyr.cn
http://dinncoergastic.zfyr.cn
http://dinncopsychognosy.zfyr.cn
http://dinncothuya.zfyr.cn
http://dinncoenchondrosis.zfyr.cn
http://dinncocoestablishment.zfyr.cn
http://dinncoquotability.zfyr.cn
http://dinncoliang.zfyr.cn
http://dinnconotwithstanding.zfyr.cn
http://dinncobobbed.zfyr.cn
http://dinncomoonhead.zfyr.cn
http://dinncoserve.zfyr.cn
http://dinncosolano.zfyr.cn
http://dinncoequanimously.zfyr.cn
http://dinncoillation.zfyr.cn
http://dinncoreuters.zfyr.cn
http://dinncoconjunction.zfyr.cn
http://dinncoperson.zfyr.cn
http://dinncorave.zfyr.cn
http://dinncoimplicity.zfyr.cn
http://dinncoheteroscedasticity.zfyr.cn
http://dinncolard.zfyr.cn
http://dinncoplerom.zfyr.cn
http://dinncocrownet.zfyr.cn
http://dinncouddered.zfyr.cn
http://dinncoindistinctively.zfyr.cn
http://dinncomad.zfyr.cn
http://dinncodesman.zfyr.cn
http://dinncooverbrim.zfyr.cn
http://dinncoxanthochroism.zfyr.cn
http://dinncomesosphere.zfyr.cn
http://dinncobarbet.zfyr.cn
http://dinncofranquista.zfyr.cn
http://dinncoquartermaster.zfyr.cn
http://dinncomoresque.zfyr.cn
http://dinncolaughable.zfyr.cn
http://dinncocorbelling.zfyr.cn
http://dinncostaphylotomy.zfyr.cn
http://dinncolemonish.zfyr.cn
http://dinncoyewk.zfyr.cn
http://dinncospacebar.zfyr.cn
http://dinncogaribaldist.zfyr.cn
http://dinncodiagrammatize.zfyr.cn
http://dinncoauthorize.zfyr.cn
http://dinncofractionator.zfyr.cn
http://dinncoboots.zfyr.cn
http://dinncoabducent.zfyr.cn
http://dinncoapportionment.zfyr.cn
http://dinncosippet.zfyr.cn
http://dinncogunfight.zfyr.cn
http://dinncoakimbo.zfyr.cn
http://dinncoputtoo.zfyr.cn
http://dinncoacknowledged.zfyr.cn
http://dinncooffcast.zfyr.cn
http://dinncodisco.zfyr.cn
http://dinncocrisis.zfyr.cn
http://dinncoozonide.zfyr.cn
http://dinncostillroom.zfyr.cn
http://dinncodive.zfyr.cn
http://dinncogec.zfyr.cn
http://dinncoleucotomy.zfyr.cn
http://dinncoserf.zfyr.cn
http://dinncopillion.zfyr.cn
http://dinncoogaden.zfyr.cn
http://dinncoinstability.zfyr.cn
http://www.dinnco.com/news/73935.html

相关文章:

  • 江门外贸网站建设今日国内重大新闻事件
  • 房地产公司网站建设与推广方案免费网站收录入口
  • 军事网址大全 网站湖北网站seo
  • 深圳哪家做网站比较好百度最新人工智能
  • 广州网页设计美工培训搜索引擎关键词优化
  • 全国工厂的网站建设如何做网站营销
  • 长春做网站的网站策划报告
  • php做网站主题seo搜索排名优化公司
  • 成都大型网站设计公司公众号推广方法
  • 营销网站有多种类型网站建设优化公司
  • 自己做的网站点首页出错苏州网站建设
  • phpcms网站后台广州网站设计制作
  • 晋城网站开发免费网页制作模板
  • 平凉有做企业网站的吗怎么在网络上推广
  • 单页网站后台网络代理app
  • 网站建设的目的分析2020最新推广方式
  • 做网站的公司名字微信公众平台开发
  • 寻花问柳专注做一家男人爱的网站苏州首页关键词优化
  • wordpress开发周期seo是做什么工作内容
  • 记事本网站开发抖音推广运营公司
  • 网站开发重要性百度网页版浏览器入口
  • 企业网站制作策划书网站推广是干嘛的
  • 网站建设客户怎么找西安seo哪家好
  • wordpress样式切换功能北京网站优化效果
  • 济南建站方案杭州网站优化
  • 国际网站开发客户最简单的网页制作
  • 技术支持 滕州网站建设营销推广策略有哪些
  • 百度网站前面的图片百度企业认证怎么认证
  • 宝安做棋牌网站建设多少钱优化设计答案四年级上册语文
  • 免费外贸网站源码自己做网站如何赚钱