物联网架构之Hadoop
案例概述 大数据期间,数以万计用户的互联网服务每时每刻都在产生着大量交互,以传统的数据技术等其他本领应对数据处置惩罚的实时性,有用性的需求
HDFS顺应期间出现,在解决大数据存储和计算方面有很多的优势
大数据定义:
[*]指无法在肯定时间范围内用常规的软件工具举行捕捉,管理和处置惩罚的巨量数据聚集
[*]需要新处置惩罚模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产数据
大数据的特点:
[*]数据体量巨大。按现在的发展趋势看,大数据的体量已经达到PB甚至EB级
[*]大数据的数据类型多样,以非结构化数据为主。如:网络日记、音频、视频、图片、地理位置信息、买卖业务数据、社交数据等。
[*]价值密度低。有价值的数据仅占到数据总量相称小的一部分。比如一段监控视频中真正有价值的画面可能只有几秒钟。由于价值密度低,以是敏捷地完成数据的价值提纯是现在大数据汹涌背景下亟待解决的难题。
[*]产生和要求处置惩罚速度快。这是大数据区分于传统数据发掘最显著的特征。
常见的大数据处置惩罚系统
名称类型阐明Hadoop开源Apache 基金会所开发的分布式系统基础架构。
用户可以在不了解分布式底层细节的情况下,开发分布式步伐Spark开源类似 Hadoop MapReduce 的并行框架Stom开源实时的、分布式以及具备高容错的计算系统MongoDB开源面向文档的 NoSql 数据库IBM PureData商用基于 Hadoop,属于IBM 专家集成系统 PureSystem
家族中的构成部分,主要面向大数据应用Oracle ExaData商用Oracle 的新一代数据库云服务器SAP Hana商用提供高性能的数据查询功能,用户可以直接对大量实
时业务数据举行查询和分析Teradata AsterData商用非结构化数据解决方案EMC GreenPlum商用接纳了大规模并行处置惩罚,支持50PB级海量存储与管理HP Vertica商用列式大数据分析数据库 Hadoop简介
[*]Hadoop是Apache基金会旗下的分布式系统基础架构
[*]用户可以在不了解分布式底层细节的情况下,开发分布式步伐
[*]充分利用集群的为例举行高速运算和存储
特点
[*]高可靠性
[*]高拓展性
[*]高效性
[*]高容错性
[*]低成本
[*]可构建在便宜呆板上
运行模式
[*]单机模式(开发场景下)
[*]伪分布模式
[*]完全分布式模式
框架的焦点构成
[*]分布式文件系统(HDFS)
[*]分布式计算系统(MapReduce)
[*]分布式资源管理系统(YARN)
生态圈
https://i-blog.csdnimg.cn/direct/5f5fb6845ffe4ecfb236a80bb87a809a.png#pic_center
分布式文件系统(HDFS)
[*] HDFS定义
[*] 是一个主/从体系架构,以分布式举行存储的分布式文件系统
[*] 主要负责聚集数据的存储与读取
[*] 优缺点
长处缺点存储超大文件不得当低延迟数据访问尺度流式访问不得当小文件存储可构建在便宜呆板上不得当并发写入,文件随机修改
[*] 聚集构成
[*]一个NameNode节点
[*]过个DateNode节点
https://i-blog.csdnimg.cn/direct/3237afb62e024414b0f458d8e61170eb.png#pic_center
[*] 数据写流程
[*]客户端向NameNode发出文件写请求,NameNode告诉客户该向哪个DataNode写入文件
[*]客户将文件写入该DataNode节点
[*]DataNode将自动复制数据到别的DataNode节点上,默认3份拷贝
https://i-blog.csdnimg.cn/direct/e68b52c5f9584626a63b57b77afc22ac.png#pic_center
[*] 数据块(Block)
[*]HDFS默认最根本的存储单位是数据块
[*]默认大小为64MB(有些发行版本为128MB)
https://i-blog.csdnimg.cn/direct/663234f514964f6c855fcd46e761117d.png#pic_center
[*] 元数据节点(NameNode)
[*]负责管理文件系统的命名空间
[*]将全部文件和万恶年假的元数据生存至一个文件系统树中
[*] 元数据存放目次
[*]NameNode节点的hadoop/dfs/name/current目次中
[*]由hdfs-site.xml中的dfs.namenode.name.dir属性指定
[*] 包含的文件类型
[*]fsimage_*、edits_ *、VERSION、…
[*] 数据节点
[*]文件系统中真正存储数据的地方
[*]一个文件被拆分成多个数据块后,分别存储至对应的数据节点上
[*] 数据存储目次
[*]DateNode节点的hadoop/dfs/data目次中
[*]由hdfs-site.xml中的dfs.datanode.data.dir属性指定
[*] 包含的文件类型
[*]blk _<id>、blk_ <id>.meta.、…
[*] 从元数据节点(Secondary NameNode)
[*]用于周期性备份NameNode节点上的元数据
[*]可以用来规复NameNode节点,但不能作为备用节点
[*]为了防止宕机,通常是将Secondary NameNode和NameNode设置为不同的主机
[*]使用hdfs-site.xml中配置的dfs.namenode.secondary.httpaddress属性值可以通过欣赏器查看SecondaryNameNode运行状态
分布式计算系统(MapReduce)
[*] MapReduce是一个实现了并行计算变成模型,用以举行大数据的计算
[*] MapReduce包罗
[*]map(映射):map负责把使命分解成多个使命
[*]reduce(规约):负责分解后多使命的处置惩罚结果举行汇总
[*] 框架包罗
[*]JopTracke
[*]是一个Master 服务,用于作业(Job)的管理和调度工作。个 Hadoop 集群中只有一台 JobTracker。一样平常情况下,应该把它部署在单独的呆板上。JobTracker负责创建、调度作业中的每一个子使命(MapTask或 ReduceTask)运行于 TaskTracker上,并监控它们。如果发现有失败的使命就重新运行它。
[*]执行由JobTracker分配的map或reduce使命
[*]定期执行Jop Tracker发送的心跳信号,报告自己的状态正在执行的使命进度
[*]接受Jop Tracker发送的新使命或莳植使命的指令
[*]存储中间数据结果,并在必要时举行数据的本地化读取以提高效率
[*]TaskTracker
[*]是运行于多个节点上的 Slave 服务,用于执利用命。TaskTracker 需要运行在 HDFS 的 DataNode 上。
分布式资源管理系统(YARN)
产生背景
[*] Hadoop1.0中的MapReduce架构面临的题目
[*]JobTracke单点故障
[*]JobTracke扩展瓶颈
[*]作业延迟高
[*]编程框架不敷机动
[*] 作用
[*]目的是使Hadoop数据处置惩罚能力超越MapReduce
本章实战
IP作用192.168.10.101node1192.168.10.102node2192.168.10.103node3
[*] 关闭防火墙
setenforce 0
sed -i '/^SELINUX=/s/enforcing/disabled/' /etc/selinux/config
systemctl stop firewalld
systemctl disable firewalld
[*] 为各个节点设置主机名
hostnamectl set-hostname node1
bash
hostnamectl set-hostname node2
bash
hostnamectl set-hostname node3
bash
[*] 修改每台主机的hosts文件
vim /etc/hosts
192.168.10.101 node1
192.168.10.102 node2
192.168.10.103 node3
[*] 创建hdoop用户组和hduser用户
# groupadd hadoop
# useradd -g hadoop hduser
# passwd hduser
[*] 为hduser用户授权
gpasswd -a hduser wheel
# visudo
##在末尾添加:
hduserALL=(ALL) ALL
[*] 安装JDK
rpm -ivh jdk-8u171-linux-x64.rpm
##安装完成之后查看
java --version
# vim /etc/profile
在末尾添加:
export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH
# source /etc/profile
[*] 配置免暗码登录(在node1上配置)
# su - hduser
$ ssh-keygen -t rsa //一路回车键即可
$ ssh-copy-id hduser@node1
$ ssh-copy-id hduser@node2
$ ssh-copy-id hduser@node3
[*] 安装Hadoop
https://i-blog.csdnimg.cn/direct/6258843ad8724d7d9f9c08e0b3c676e0.png#pic_center
[*] 将hadoop包拷贝到hduser的家目次并解压
##在node1上操作
$ tar zxvf hadoop-2.6.5.tar.gz
$ mv hadoop-2.6.5 hadoop
[*] 配置hadoop的情况变量
$ sudo vim /etc/profile
##在末尾添加:
export HADOOP_HOME=/home/hduser/hadoop
export PATH=$HADOOP_HOME/bin:$PATH
$ source /etc/profile
[*] 配置hadoop-env.sh****文件
$ cd ~/hadoop/etc/hadoop/
$ vim hadoop-env.sh
在末尾添加:
export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
[*] 修改yarn-env.sh文件
$ vim yarn-env.sh
在末尾添加
export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
[*] 修改slaves文件
$ vim slaves
##清空文件中原有的内容
node2
node3
[*] 编辑core-site.xml文件
$ vim core-site.xml
##在末尾找到<configuration>模块
##在里面添加配置:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hduser/hadoop/tmp</value>
</property>
</configuration>
[*] 编辑hdfs-site.xml文件
$ vim hdfs-site.xml
##在末尾找到<configuration>模块
##在里面添加:
<configuration>
<property><name>dfs.namenode.secondary.http-address</name><value>node1:50090</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hduser/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hduser/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
备注:
名称节点和数据节点的存放位置,文件副本数和读取权限。
[*] 修改mapred-site.xml文件
$ cp mapred-site.xml.templatemapred-site.xml
$ vim mapred-site.xml
##在末尾找到<configuration>模块,在里面添加:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>node1:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>node1:19888</value>
</property>
</configuration>
备注:Mapreduce作业记录的web地址和端口
[*] 修改yarn-site.xml文件
$ vim yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>node1:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>node1:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>node1:8035</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>node1:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>node1:8088</value>
</property>
</configuration>
备注:
resourcemanager、nodemanager的通信端口,web端口等信息
[*] 将hadoop目次拷贝到其他节点上
#scp -r /home/hduser/hadoop node2:/home/hduser
#scp -r /home/hduser/hadoop node3:/home/hduser
[*] 验证安装配置
[*] 在 Master 主机(node1)上格式化 NameNode
$ cd hadoop/
$ bin/hdfs namenode -format
$ sbin/start-dfs.sh
[*] 查看进程
$ jps
##16721 Jps
##15687 NameNode
##15866 SecondaryNameNode
[*] 启动yarn
$ sbin/start-yarn.sh
[*] 查看集群情况
$ bin/hdfs dfsadmin -report
[*] 欣赏器查看 HDFS 运行状态:
http://192.168.10.101:50070
[*] 运行 Hadoop 的 WordCount 步伐
[*] 创建测试文件的目次
$ mkdir ~/file
[*] 编辑测试文件
$ cd ~/file/
$ echo "ni hao hadoop">file1.txt
$ echo "hello hadoop hi china">file2.txt
[*] 启动hadoop并 创建hdfs目次
$ cd ~/hadoop/
$ sbin/start-all.sh
$ bin/hadoop fs -mkdir /input2
[*] 将file1和file2拷贝到hdfs存储目次中
$ bin/hadoop fs -put ~/file/file* /input2/
$ bin/hadoop fs -ls /input2/
[*] 执行WordCount步伐,对文件举行统计
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar wordcount /input2/ /output2/wordcount1
注意:输出目次不能已存在,否则不会输出
[*] 查看执行结果
$ bin/hadoop fs -cat /output2/wordcount1/*
如果看到输出结果证明hadoop安装成功
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]