Hadoop从入门到放弃(1)初识&搭建

学习要求:不针对0基础
linux基础;
java基础;
数据库基础;
最近开始学习大数据:整体感觉不算难,也挺有意思的,但是踩坑很痛苦。

1.大数据介绍:
数据:一切皆数据

结构:结构化,非结构化

4V特点:
	1.volume数据量大
	2.velocity数据增长速度快
	3.variety数据种类多(图片,视频,文字,数值)
	4.value数据价值密度小,综合价值大

数据来源:
	1)公司自己的业务数据;
	2)第三方
	3)爬虫
	
数据处理:
	1)缺失数据处理:
		考虑是否影响整体业务数据,不影响删除。如果和钱相关不能轻易删除。
	2)敏感字段,进行脱敏处理,加密算法 md5
	
数据价值:
	人物画像
	根据用户做一个全方位分析画像,属性 人脉 消费水平 性格 消费偏向
	
了解几个概念:
	集群:
		多个服务器共同协作完成同一个人物;每个机器叫做节点,共同组成的群体叫做集群。
		集群中的节点通过局域网连接或其他方式。

	分布式:
		分而治之,一个任务分成多个子任务
		原来一个人干的事情,现在大家分工劳动。
		分布式文件系统 分布式数据库 分布式计算系统
	
	负载均衡:nginx	
		每个节点分布的人基本均衡,合理利用集群效率;
		和机器的硬件配置相匹配;

2.HADOOP介绍:
来源背景:
gfs–hdfs
mapreduce–mapreduce
bigtable–hbase

hadoop是什么?
	一个分布式开源框架;
	在应用层提供高可用;
	将硬件问题当成常态,不会影响整体进程;
	
hadoop的模块:
	common:提供下面三个模块的工具类,rpc框架
	
	hdfs:hadoop distributed file system 分布式存储 海量数据存储
		主从架构:master-salves
		主: java 进程 namenode 一个
		从: datanode
		助理进程: secondarynamenode 分担备份namenode
	
	yarn:集群资源调度框架,类似于windows系统
		负责集群的资源管理,也是主从架构
		主:resourcemanager 从:nodemanager
		
	mapreduce:
		有计算任务才会有相应进程;
	
####hadoop的搭建:
		搭建准备:所有文件要放在用户目录下 否则没有权限
			1)ip配置 (见我的博客)vim /etc/sysconfig/network-scripts/ifcfg-eth0
			2)主机名  vi /etc/sysconfig/network
			3)主机映射 vi /etc/hosts
			4)关闭防火墙和sellinux(用户级别不高用不到)
				service iptables stop ;vi /etc/selinux/config
				service iptables stop

				
			5)将系统启动级别设为3(我装的系统默认是3)
				vi /etc/inittab
				# Default runlevel. The runlevels used are:
				#   0 - halt (Do NOT set initdefault to this) 关机
				#   1 - Single user mode 单用户模式
				#   2 - Multiuser, without NFS (The same as 3, if you do not have networking) 多用户模式
				#   3 - Full multiuser mode 多用户模式
				#   4 - unused 
				#   5 - X11 图形化界面
				#   6 - reboot (Do NOT set initdefault to this) 重启
			
			6)创建普通用户,并添加sudoers权限(修改系统文件)分布式各节点账户密码要相同
				useradd hadoop;passwd hadoop 
			
				su - hadoop  #切换用户
				
				vi /etc/sudoers  [hadoop   ALL=(ALL)     ALL]
				
			7)创建免密登录
				ssh-keygen
				cd .ssh/ ; ls #一个公钥 一个密钥
				ssh-copy-id node1 #给node1发送公钥,ssh node1 验证
			
			8)安装卸载jdk #很重要 且需要注意系统位数 和java位数
				卸载:
					rpm -qa|grep jdk
					rpm -e 对应jdk --nodeps
			
			9)时间同步
			不能联网: date -s 手动指定时间
			公网时间服务器:sudo ntpdate ntp1.aliyun.com
		
		搭建方式:
			1)伪分布式搭建;所有版本下载链接:https://archive.apache.org/dist/hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gz
					不选太陈旧版本也不选太新版本;
				安装:【切换普通用户】
					上传安装包
					解压
					配置环境变量 
					修改配置文件 cd $HADOOP_HOME/etc/hadoop
						1)hadooop-env.sh
							JAVA_HOME=
						2)core-site.xml  #主节点配置,参考配置链接https://hadoop.apache.org/docs/r2.7.7/hadoop-project-dist/hadoop-common/SingleCluster.html
							<configuration>
								<property>
									<name>fs.defaultFS</name>
									<value>hdfs://node-1:9000</value>
									<!-- jdbc:mysql://localhost:3306 -->
								</property>
							</configuration>
														
						3) hdfs-site.xml
							<configuration>
								<property>
									<name>dfs.replication</name>
									<value>1</value>
								</property>
							</configuration>
						
						
						4) yarn-site.xml
							<configuration>
								<property>
									<name>yarn.nodemanager.aux-services</name>
										<value>mapreduce_shuffle</value>
								</property>
							</configuration>

						5)cp mapred-site.xml.template mapred-site.xml #与yarn相互指定
						  vi mapred-site.xml 
								<configuration>
									<property>
										<name>mapreduce.framework.name</name>
										<value>yarn</value>
									</property>
								</configuration>
						
						
						6) slaves #配置sencondarynamenode
						
						7) 格式化 #注意:普通用户无法访问root文件夹
						hadoop namenode -format
						
						8)启动
						start-all.sh ;start-hdfs.sh ;start-yarn.sh
						
						9)验证jps 6个进程
						4066 NodeManager
						3496 NameNode
						3800 SecondaryNameNode
						3961 ResourceManager
						3627 DataNode
						4142 Jps

						页面访问
						hdfs:192.168.1.188:50070
						yarn:192.168.1.188:8088
						
			2)完成分布式搭建;
				和伪分布式一致;
				各节点的普通用户账户密码一致;
				先在一个节点执行所有修改,再远程发送到其他节点
				
				1)配置文件:
					集群规划:		
				hdfs 							yarn
		node-1	namenode 			datanode	 				nodemanager
		node-2	secondarynamenode	datanode					nodemanager
		node-3						datanode	resourcemanager	 nodemanager

					修改配置文件 cd $HADOOP_HOME/etc/hadoop
						1)hadooop-env.sh
							JAVA_HOME=
						2)core-site.xml  #主节点配置,参考配置链接https://hadoop.apache.org/docs/r2.7.7/hadoop-project-dist/hadoop-common/SingleCluster.html
							<!--指定主节点-->
								<property>
									<name>fs.defaultFS</name>
									<value>hdfs://node1:9000</value>
									<!-- jdbc:mysql://localhost:3306 -->
								</property>
							
							
							<!--临时目录/文件存储目录,默认在tmp,
							一定配置在有权限的目录下,该用户在home目录下游权限-->
								<property>
									<name>hadoop.tmp.dir</name>
									<value>/home/hadoop/hadoopdata</value>
								</property>
							
							
						3) hdfs-site.xml
								<!-- namenode,datanode 的数据目录-->
								<property>
									<name>dfs.namenode.name.dir</name>
									<value>/home/hadoop/data/hadoopdata/name</value>
								</property>

								<property>
									<name>dfs.datanode.data.dir</name>
									<value>/home/hadoop/data/hadoopdata/data</value>
								</property>
								
								<!-- 数据存储份数 的数据目录-->
								<property>
									<name>dfs.replication</name>
									<value>2</value>
								</property>

								<!-- 助理节点-->
								<property>
									<name>dfs.secondary.http.address</name>
									<value>node2:50090</value>
								</property>								
						
						
						4) yarn-site.xml

								<property>
									<name>yarn.resourcemanager.hostname</name>
										<value>node3</value>
								</property>
								<!-- yarn集群为mapreduce 程序提供shuffle服务
								允许mr执行在yarn上-->
								<property>
									<name>yarn.nodemanager.aux-service</name>
										<value>mapreduce_shuffle</value>
								</property>



						5)cp mapred-site.xml.template mapred-site.xml #与yarn相互指定
						  vi mapred-site.xml 
								<--!允许mr跑在yarn上-->
									<property>
										<name>mapreduce.framework.name</name>
										<value>yarn</value>
									</property>

						
						
						6) slaves #从节点的信息
							node1
							node2
							node3


			2远程发送;
				scp -r /hadoop
			普通用户执行系统命令用sudo[如/etc/下;]ll 看文件权限
			普通用户
			scp -r hadoop-2.7.2 node2:/home/hadoop/
			scp -r hadoop-2.7.2 node3:/home/hadoop/
			scp -r ~/.bashrc node2:~/.bashrc
			scp -r ~/.bashrc node3:~/.bashrc
			
			3格式化 必须在namenode节点执行
			
			4启动 start-dfs.sh #任意节点执行
			start-yarn.sh #在yarn的主节点执行
			
			5验证:
			node1:50070 #hdfs
			node3:8088 #资源调度

###################################安装问题
安装问题:
1)http无法访问8088 50070[DFS文件系统成功格式化,节点启动了,jps也有显示]
netstat -apn | grep 50070

	答案是防火墙没关 进入管理员状态
	service iptables start
	service iptables stop
	service iptables status
	
2)主机找不到
	vim /etc/sysconfig/network-scripts/ifcfg-eth0
	vi /etc/sysconfig/network
	重启集群

3)格式化错误:
	配置文件写错了;
	
4)某些进程启动不了
	措施1:关闭,重新启动集群;
	措施2:看那个进程没有启动
		单独启动hdfs进程:
			hadoop-daemon.sh start datanode #单独启动hadoop datanode进程
		单独启动yarn进程:
			hadoop-daemon.sh start nodemanager

安装注意事项:
1)成功的格式化只有一次;
格式化过程:
创建namenode存储数据的相关目录
生成新的版本信息

	想要格式化需要:
		1)删除namenode目录 rm -rf /home/hadoop/data/hadoopdata/name
		2)删除datanode目录 再进行格式化 rm -rf /home/hadoop/data/hadoopdata/data
		否则datanode启动不了,因为会生成不同的集群id
		或者rm -rm  /home/hadoop/data

2)环境变量的配置
	jdk
	hadoop
	 修改[环境变量]有三个:
		1)etc/profile 系统环境变量;
		2)~/.bashrc 用户环境变量;
		3)~/.bash_profile 用户环境变量;
		  etc/profile>.bashrc> .bash_profile
			
3)集群一定需要时间同步
	节点时间要保持一致;
	集群中的各节点需要通信,datanode 和 namenode 之间通信依靠心跳,
	心跳差超过630s就会认为该节点死了;
	
4)集群安装模式:
	1)单机模式:直接解压,没人用
	2)伪分布式:所有jar程序在一个机器上运行;
	3)完全分布式:
		用户使用感知不到多节点;
		主从架构;hdfs yarn主各只有一个
		namenode 存储元数据,管理数据的数据
		datanode负责数据存储,先经过namenode;			
		主节点挂了 集群就挂了,开发环境不适用,测试学习使用。
		secondarynamenode只是一个助理 只能分担压力和备份,不能代替
		
	4)高可用:最广泛的搭建方式
		集群可以持续对外提供服务; 可以做到24小时不间断;
		依赖zookeeper 搭建放在zookeeper之后
		集群架构:双主多从
		有两个namenode 另一个处于热备份状态。死的namenode死了又活了 就变成standby
		
		缺陷:主节点的能力只有一个节点;如果集群中的节点过多,会导致主节点崩掉;
	
	
	5)联邦机制:
		有多个活跃的主节点;共同使用所有datanode;
		每个namenode只负责集群中一部分的node;
		
		联邦+高可用:最高端的集群模式;
基于数据挖掘的音乐推荐系统设计与实现 需要一个代码说明,不需要论文 采用python语言,django框架,mysql数据库开发 编程环境:pycharm,mysql8.0 系统分为前台+后台模式开发 网站前台: 用户注册, 登录 搜索音乐,音乐欣赏(可以在线进行播放) 用户登陆时选择相关感兴趣的音乐风格 音乐收藏 音乐推荐算法:(重点) 本课题需要大量用户行为(如播放记录、收藏列表)、音乐特征(如音频特征、歌曲元数据)等数据 (1)根据用户之间相似性或关联性,给一个用户推荐与其相似或有关联的其他用户所感兴趣的音乐; (2)根据音乐之间的相似性或关联性,给一个用户推荐与其感兴趣的音乐相似或有关联的其他音乐。 基于用户的推荐和基于物品的推荐 其中基于用户的推荐是基于用户的相似度找出相似相似用户,然后向目标用户推荐其相似用户喜欢的东西(和你类似的人也喜欢**东西); 而基于物品的推荐是基于物品的相似度找出相似的物品做推荐(喜欢该音乐的人还喜欢了**音乐); 管理员 管理员信息管理 注册用户管理,审核 音乐爬虫(爬虫方式爬取网站音乐数据) 音乐信息管理(上传歌曲MP3,以便前台播放) 音乐收藏管理 用户 用户资料修改 我的音乐收藏 完整前后端源码,部署后可正常运行! 环境说明 开发语言:python后端 python版本:3.7 数据库:mysql 5.7+ 数据库工具:Navicat11+ 开发软件:pycharm
MPU6050是一款广泛应用在无人机、机器人和运动设备中的六轴姿态传感器,它集成了三轴陀螺仪和三轴加速度计。这款传感器能够实时监测并提供设备的角速度和线性加速度数据,对于理解物体的动态运动状态至关重要。在Arduino平台上,通过特定的库文件可以方便地与MPU6050进行通信,获取并解析传感器数据。 `MPU6050.cpp`和`MPU6050.h`是Arduino库的关键组成部分。`MPU6050.h`是头文件,包含了定义传感器接口和函数声明。它定义了类`MPU6050`,该类包含了初始化传感器、读取数据等方法。例如,`begin()`函数用于设置传感器的工作模式和I2C地址,`getAcceleration()`和`getGyroscope()`则分别用于获取加速度和角速度数据。 在Arduino项目中,首先需要包含`MPU6050.h`头文件,然后创建`MPU6050`对象,并调用`begin()`函数初始化传感器。之后,可以通过循环调用`getAcceleration()`和`getGyroscope()`来不断更新传感器读数。为了处理这些原始数据,通常还需要进行校准和滤波,以消除噪声和漂移。 I2C通信协议是MPU6050与Arduino交互的基础,它是一种低引脚数的串行通信协议,允许多个设备共享一对数据线。Arduino板上的Wire库提供了I2C通信的底层支持,使得用户无需深入了解通信细节,就能方便地与MPU6050交互。 MPU6050传感器的数据包括加速度(X、Y、Z轴)和角速度(同样为X、Y、Z轴)。加速度数据可以用来计算物体的静态位置和动态运动,而角速度数据则能反映物体转动的速度。结合这两个数据,可以进一步计算出物体的姿态(如角度和角速度变化)。 在嵌入式开发领域,特别是使用STM32微控制器时,也可以找到类似的库来驱动MPU6050。STM32通常具有更强大的处理能力和更多的GPIO口,可以实现更复杂的控制算法。然而,基本的传感器操作流程和数据处理原理与Arduino平台相似。 在实际应用中,除了基本的传感器读取,还可能涉及到温度补偿、低功耗模式设置、DMP(数字运动处理器)功能的利用等高级特性。DMP可以帮助处理传感器数据,实现更高级的运动估计,减轻主控制器的计算负担。 MPU6050是一个强大的六轴传感器,广泛应用于各种需要实时运动追踪的项目中。通过 Arduino 或 STM32 的库文件,开发者可以轻松地与传感器交互,获取并处理数据,实现各种创新应用。博客和其他开源资源是习和解决问题的重要途径,通过这些资源,开发者可以获得关于MPU6050的详细信息和实践指南
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值