大数据Hadoop完全分布式及心得领会

天空闲话  金牌会员 | 2024-7-16 13:15:08 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 537|帖子 537|积分 1611


前言

认识hadoop,根据所学知识完成作业,并总结本学期心得领会。


一、认识hadoop

Hadoop是一个分布式系统底子技能框架,使用hadoop,开发用户可以在不了解分布式底层细节的情况下,开发分布式步伐,从而达到充实使用集群的威力高速运算和存储的目的;而在本学期中,我们的专业老师带我们学习了Hadoop框架中最焦点的设计:MapReduceHDFS
MapReduce从字面上就能看出,是由两个动词Map和Reduce组成,“Map” 就是将一个任务分解成为多个任务,“Reduce” 就是将分解后多任务处理的结果汇总起来,得出末了的分析结果。即把一个巨大的任务分割成许许多多的小任务单位,末了再将每个小任务单位的结果汇总,并求得终极结果。
而map的输出和reduce的输入之间的另有一个数据处理过程,即为shuffle过程。该过程涉及分区、排序、分组等操作。
数据流转过程

HDFS的中文翻译是Hadoop分布式文件系统(Hadoop Distributed File System)。它本质还是步伐,紧张还是以树状目次结构来管理文件(和linux类似,/表示根路径),且可以运行在多个节点上(即分布式);它可以存储海量离线数据(如TB、PB、ZB级别的数据),并且保证数据高可用,支持高并发访问。但并不适合将大量的小文件存到HDFS。其紧张原因是:HDFS的NameNode进程在内存中存储文件的元数据,故文件越多,消耗的内存就越大。大量的小文件,耗尽NameNode节点的内存,而实际存的文件总量却很小,HDFS存海量数据的上风没有发挥出来。
HDFS的框架


HDFS存文件的时候,会将文件按照一定的巨细(默认是128M)举行分割,独立存储,这些独立的文件即为数据块(Block)。

二、一课一得作业讲解

   题: 模拟天生新能源车辆数据编写一个步伐,每天凌晨3点模拟天生当天的新能源车辆数据(字段信息必须包含:车架号、行驶总里程、车速、车辆状态、充电状态、剩余电量SOC、SOC低报警、数据天生时间等)。
  1、终极部署时,要将这些数据写到第一题的HDFS中。
2、车辆数据要按天存储,数据格式是JSON格式,别的如果数据文件大于100M,则另起一个文件存。每天的数据总量不少于300M。好比假设步伐是2023-01-1 03点运行,那么就将当前模拟天生的数据写入到HDFS的/can_data/2023-01-01文件夹的can-2023-01-01.json文件中,写满100M,则继承写到can-2023-01-01.json.2文件中,依次类推;
3、每天模拟天生的车辆数据中,必须至少包含20辆车的数据,即要含有20个车架号(一个车架号表示一辆车,用字符串表示);
4、每天天生的数据中要有少量(20条左右)重复数据(全部字段都雷同的两条数据则以为是重复数据),且同一辆车的两条数据的数据天生时间间隔两秒;
5、每天天生的数据中要混有少量前几天的数据(即数据天生时间不是当天,而是前几天的)。
实现步调


  • 搭建集群
  • 模拟天生新能源车辆数据编写一个步伐
  • 终极部署,将这些数据写到HDFS中。
1. 搭建集群

集群规划
主机IP主机名HDFSYARN192.168.91.4masterNameNode DataNodeResourceManager NodeManager192.168.91.5save1SecondaryNameNode DataNodeNodeManager192.168.91.6save2DataNodeNodeManager
(1) 准备三台假造机,之前在伪分布式中部署过一台假造机了,因此直接复制三份假造机即可
1.1 先创建三个文件夹,并分别在每一个文件夹中复制一个假造机

1.2 启动VMware,重命名三个节点的名称分别为master save1 save2
1.3 分别修改master、save1、save2中的ip并重启网卡

  1. 修改IP命令
  2. vi /etc/sysconfig/network-scripts/ifcfg-ens33;
  3. Esc 保存退出
  4. :wq
复制代码
重启网卡命令:service network restart;

(2) 修改master、save1、save2的主机名

  1. 重命名命令:
  2. hostnamectl set-hostname master  //master
  3. hostnamectl set-hostname save1  //save1
  4. hostnamectl set-hostname save2  //save2
复制代码
(3) 添加IP的映射

  1. 添加IP的映射命令
  2. vi /etc/hosts
  3. Esc 保存退出
  4. :wq
复制代码

(4) 免密登录
因为master、save1、save2三个节点都是从之前的已经安装好Hadoop伪分布式的假造机复制得来,而其时已经设置了免密登录,故不需再设置了。也就是master可以免密登录到master、save1、save2。
(5) 关闭防火墙
同理,之前已经设置不允许防火墙开机自启,默认开机是关闭的,故也不必要操作。
(6) 删除伪分布式data的数据
  1. 切换到该路径下
  2. cd /usr/local/hadoop-2.7.1/
  3. 删除命令
  4. rm -rf ./data/
复制代码

(7) 修改master 的配置文件
7.1

  1. 命令示例
  2. vi core-site.xml;
  3. Esc 保存退出
  4. :wq
复制代码
7.2

  1. 命令示例
  2. vi hdfs-site.xml;
  3. Esc 保存退出
  4. :wq
复制代码
7.3

  1. 命令示例
  2. vi yarn-site.xml;
  3. Esc 保存退出
  4. :wq
复制代码
7.4

  1. 命令示例
  2. vi saves;
  3. Esc 保存退出
  4. :wq
复制代码

(8)将刚才master的配置信息同步到saev1、saev2上

  1. 同步到saev1
  2. scp /etc/hosts root@save1:/etc;
  3. 同步到saev2
  4. scp /etc/hosts root@save2:/etc;
复制代码
(9)时间同步
   

  • 下载ntpdate插件
    yum install -y ntpdata
    2.时间同步命令
    ntpdate ntp4.aliyun.com;
  (10)将NameNode格式化
  1. hdfs namenode -format
复制代码
ps:禁止重复格式化

(11)启动集群
   分别在master、save1,save2节点上都输入一遍start-all.sh
  1. 代码示例:
  2. start-all.sh
复制代码

至此,三个节点的集群就可以算搭建乐成!
2. 模拟天生新能源车辆数据编写一个步伐

2.1 天生车辆数据
(1)先随机天生20辆车的车架号,并把它存入一个空的列表中;
(2)设置每一个值的状态;
(3)设置数据天生的时间;
(4)把数据存入列表中;

代码示例:
  1. def generate_data():
  2.     vin_list = ['VIN{}'.format(i) for i in range(1,21)] # 车架号列表
  3.     data_list = []
  4.     for vin in vin_list:
  5.     mileage = round(random.uniform(1000,10000),2) # 行驶总里程
  6.         speed = round(random.uniform(0,120),2) # 车速
  7.         status = random.choice(['running’,'stopped']) # 车辆状态
  8.         charge_status = random.choice(['charging','discharging','idle']) # 充电状态
  9.         soc = round(random.uniform(0,100),2) # 剩余电量SOC
  10.         soc_Low_alert = random.choice([True,False]) # SOC低报警
  11.         timestamp = int(time.time()) # 数据生成时间
  12.         data = {
  13.             'vin': vin,
  14.             'mileage': mileage
  15.             ' speed': speed,
  16.             ' status': status ,
  17.             ' charge_status': charge_status
  18.             ' soc': soc,
  19.             'soc_low_alert': soc_low_alert
  20.             'timestamp': timestamp
  21.         }
  22.         data_list.append(data)
  23.     return data_list
复制代码

2.2.添加重复数据
(1)添加重复数据,使用随机添加,在20辆车中随机添加一些重复的数据;
(2)看题目要求:每天天生的数据中要混有少量前几天的数据(即数据天生时间不是当天,而是前几天的),所以我们要添加前几天的数据;
(3)按时间排序:data.sort(key=lambda x:x[‘timestamp’])
(4)添加时间间隔为2秒的重复数据
(5)将数据写入HDFS

代码示例:
  1. data = generate_data()
  2. #添加重复数据
  3. repeat_data = random.sample(data, 20)
  4. data += repeat_data
  5. #添加前几天的数据
  6. for i in range(20):
  7.         timestamp = int(time.time()) - (i + 1) * 24 * 60 * 60
  8.         vin =         random.choice(['VIN{}'.format(i) for i in range(1,21)])
  9.         data.append({
  10.                 ' vin': vin,
  11.                 'mileage': round(random.uniform(1000,10000),2),
  12.                 'speed': round(random.uniform(0,120), 2),
  13.                 ' status': random.choice(['running','stopped']),
  14.                 'charge_status': random.choice(['charging','discharging','idle']),
  15.                 ' soc': round(random.uniform(0, 100),2),
  16.                 'soc_Low_alert': random.choice([True, False]),
  17.                 'timestamp': timestamp
  18.         })
  19.         #按时间排序
  20. data.sort(key=lambda x: x['timestamp'])  #添加时间间隔为2秒的重复数据
  21. for i in range(len(data) - 1):
  22.         if data[i]['vin'] == data[i + 1]['vin']:
  23.         data.insert(i + 1,data[i].copy())
  24.         data[i + 1]['timestamp'] += 2
  25.         #写入HDFS
  26. write_to_hdfs(data, hdfs_path)
复制代码

3. 终极部署,将这些数据写到HDFS中。

1.打包天生jar包,并提交至Hadoop集群运行
2.设置定时任务,规定每天凌晨三点的第一分钟运行一次
三、学习劳绩

互联网的快速发展带来了数据快速增加,海量数据的存储已经不是一台机器所能处理的题目了。Hadoop的技能就应运而生。在本学期中专业老师的讲课下,我对于这个概念有了一个比力系统的了解。
大数据Hadoop是一个非常紧张的实际项目,对于全部想要了解大数据和Hadoop生态系统的人来说都是一个很好的机会。在课上课后的实操过程中,我不光学到了Hadoop的底子知识,同时也学到了如何使用Hadoop来处理大数据。实操的过程必要我们把握一些关于大数据的技能,如如何使用MapReduce算法,以及如何使用IDEA API来举行大数据分析。
总的来说,通过学习本学期这门课程,我对大数据和Hadoop系统有了较深入的了解,并且也加深了我的实操应用本领。我相信,随着大数据和人工智能的不绝发展,这项技能将在未来发挥更大的作用。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

天空闲话

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表