1、上课方式 基础理论部分——录播 实践部分——直播
“预习+复习”的模式 预习:录播视频 复习:直播视频:
2、上课纪律 (1)空杯心态 (2)100%热情投入:至少30次课,时间宝贵 (3)坚持不懈,一定要有信心 (4)保持互动:1是 0否 (5)人之所以痛苦,在于追求错误的东西
3、经验 目标:找大数据工作 方法:找猎头?求职网站?群里小伙伴互相介绍、内推?班主任老师——都属于渠道问题 策略:你准备好了么? 准备什么? 1) 简历——硬件:创造机会 2) 修养——软件:把握机会 工作前:先讲故事,再谈灵魂 工作后:优化灵魂,讲新故事
4、开发语言:linux系统命令、python、java、c++、shell、sql、scala 开发工具:linux、hadoop、spark、tensorflow、pytorch 开发方式:shell、vim、IDE(idea) 5、项目:《音乐推荐系统》,大家不要过于入戏太深 ============================= Hadoop生态圈
尽可能不重复造轮子
课程整体包含3个部分 1、大数据平台(hadoop、spark)——hadoop生态圈 2、服务器开发(日志流) 3、数据挖掘(机器学习) ============================= 常见业务
1、搜索 以前:人->内容 现在:人->服务
大数据:人产生
音乐->物品(item)-> itemid 用户->人(user)-> userid
大数据:用户多、物品多 用户多:产生用户行为多(用户行为挖掘) 物品多:产生大量的元数据(Metadata)
元数据:物品的属性Schema(描述数据的数据)
用户行为:通过监控实时获取 物品元数据:
2、广告
搜索广告 展示广告
3、推荐
学习重点: (1)检索/推荐系统定位 (2)架构/框架层次思维
迅捷流程图制作软件
================================
下节课计划: 1、架构思路 2、MapReduce——复习的思路 3、简易的推荐系统
预习内容: 1、MapReduce、HDFS录播 2、搭建环境hadoop-2.6.5
=============================== 1、架构 2、mapreduce(复习) (1)通常一个集群中,有这几个角色:master、slave、client (2)数据副本——数据高可用、容灾 (3)mapreduce——分而治之思想 (4)一个split和一个map是一对一的关系上 (5)开发java相当于开发函数,开发python等脚本,相当于规定好标准输入和输出 (6)hadoop1.0 -> hadoop 2.0 hadoop1.0: 主:jobtracker、namenode 从:tasktracker、datanode 进程:worker
hadoop 2.0 主:ResourceMgr(RM资源调度)、ApplicationManager(AM任务调度) 从:NodeManager(NM) 进程:容器(Container)
单机调试: cat input | mapper | sort | reducer > output
实践总结: 整体情况:hadoop-2.6.5 3个节点,1个master,2个slave master:192.168.87.10 slave1:192.168.87.11 slave2:192.168.87.12 页面观察: HDFS页面:http://192.168.87.10:50070/dfshealth.html#tab-datanode yarn管理页面:http://192.168.87.10:8088/cluster 节点上,分发目标path: /usr/local/src/hadoop-2.6.5/tmp/nm-local-dir/usercache/root/appcache/application_1543137200099_0011/container_1543137200099_0011_01_000001 杀死任务: yarn application -kill application_1543137200099_0011
(1)wordcount (2)全排序 (a) 单reducer 第一个代码:mr_allsort_1reduce_python(base count) 第二个代码:mr_allsort_1reduce_python_2 (通过配置完成) 依赖于框架自身的sort功能 -jobconf "mapred.reduce.tasks=1" 一种方式:通过加一个很大的base count,保证key对齐,依赖字典序完成全局排序 另外一种方式: -partitioner org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner \ # 利用该配置可以完成二次排序 -jobconf org.apache.hadoop.mapred.lib.KeyFieldBasedComparator \ # 利用该配置可以完成key排序 -jobconf stream.num.map.output.key.fields=1 \ # 设置map分隔符的位置,该位置前的为key,之后的为value -jobconf mapred.text.key.partitioner.options="-k1,1" \ # 选择哪一部分做partition -jobconf mapred.text.key.comparator.options="-k1,1n" \ # 设置key中需要比较的字段或字节范围 -jobconf mapred.reduce.tasks=1 (b) 多reducer mr_allsort_python(多桶) 适合大数据 -jobconf mapred.reduce.tasks=2 \ -jobconf stream.num.map.output.key.fields=2 \ # -jobconf num.key.fields.for.partition=1 \ # partition key的值,用于分发 -partitioner org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner
(3)白名单——分发 -file:把本地的文件分发到各个节点 -cachefile:把hdfs的压缩文件分发到各个节点 -archivefile:把hdfs的压缩目录分发到各个节点
tar cvzf w.tar.gz white_list_1 white_list_2
(4)压缩 (5)join -jobconf stream.num.map.output.key.fields=2 \ -jobconf num.key.fields.for.partition=1
3、一个简易demo,检索系统
============================== 下节课计划: 1、NLP tfidf、关键词提取、lcs 2、中文分词 jieba jieba+pyweb ====> 远程分词服务--------------> Storm实时推荐 mapreduce、spark
预习内容: 1、mr的所有视频(包含今天的直播) 2、vim
conda安装: 安装:conda create -n py27tf python=2.7 -y -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda install -y -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ tensorflow=1.2 conda info -e source activate py27tf pip install numpy