ToB企服应用市场:ToB评测及商务社交产业平台
标题:
物联网架构之Hadoop
[打印本页]
作者:
盛世宏图
时间:
2024-8-29 14:31
标题:
物联网架构之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)
生态圈
分布式文件系统(HDFS)
HDFS定义
是一个主/从体系架构,以分布式举行存储的分布式文件系统
主要负责聚集数据的存储与读取
优缺点
长处缺点存储超大文件不得当低延迟数据访问尺度流式访问不得当小文件存储可构建在便宜呆板上不得当并发写入,文件随机修改
聚集构成
一个NameNode节点
过个DateNode节点
数据写流程
客户端向NameNode发出文件写请求,NameNode告诉客户该向哪个DataNode写入文件
客户将文件写入该DataNode节点
DataNode将自动复制数据到别的DataNode节点上,默认3份拷贝
数据块(Block)
HDFS默认最根本的存储单位是数据块
默认大小为64MB(有些发行版本为128MB)
元数据节点(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用户
[root@node1 ~]# groupadd hadoop
[root@node1 ~]# useradd -g hadoop hduser
[root@node1 ~]# passwd hduser
复制代码
为hduser用户授权
gpasswd -a hduser wheel
[root@node1 ~]# visudo
##在末尾添加:
hduser ALL=(ALL) ALL
复制代码
安装JDK
rpm -ivh jdk-8u171-linux-x64.rpm
##安装完成之后查看
java --version
[root@node1 ~]# 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
[root@node1 ~]# source /etc/profile
复制代码
配置免暗码登录(在node1上配置)
[root@node1 ~]# su - hduser
[hduser@node1 ~]$ ssh-keygen -t rsa //一路回车键即可
[hduser@node1 ~]$ ssh-copy-id hduser@node1
[hduser@node1 ~]$ ssh-copy-id hduser@node2
[hduser@node1 ~]$ ssh-copy-id hduser@node3
复制代码
安装Hadoop
将hadoop包拷贝到hduser的家目次并解压
##在node1上操作
[hduser@node1 ~]$ tar zxvf hadoop-2.6.5.tar.gz
[hduser@node1 ~]$ mv hadoop-2.6.5 hadoop
复制代码
配置hadoop的情况变量
[hduser@node1 ~]$ sudo vim /etc/profile
##在末尾添加:
export HADOOP_HOME=/home/hduser/hadoop
export PATH=$HADOOP_HOME/bin:$PATH
[hduser@node1 ~]$ source /etc/profile
复制代码
配置
hadoop-env.sh****文件
[hduser@node1 ~]$ cd ~/hadoop/etc/hadoop/
[hduser@node1 hadoop]$ vim hadoop-env.sh
在末尾添加:
export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
复制代码
修改yarn-env.sh文件
[hduser@node1 hadoop]$ vim yarn-env.sh
在末尾添加
export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
复制代码
修改slaves文件
[hduser@node1 hadoop]$ vim slaves
##清空文件中原有的内容
node2
node3
复制代码
编辑core-site.xml文件
[hduser@node1 hadoop]$ 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文件
[hduser@node1 hadoop]$ 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文件
[hduser@node1 hadoop]$ cp mapred-site.xml.template mapred-site.xml
[hduser@node1 hadoop]$ 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文件
[hduser@node1 hadoop]$ 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目次拷贝到其他节点上
[root@node1 ~]#scp -r /home/hduser/hadoop node2:/home/hduser
[root@node1 ~]#scp -r /home/hduser/hadoop node3:/home/hduser
复制代码
验证安装配置
在 Master 主机(node1)上格式化 NameNode
[hduser@node1 ~]$ cd hadoop/
[hduser@node1 hadoop]$ bin/hdfs namenode -format
[hduser@node1 hadoop]$ sbin/start-dfs.sh
复制代码
查看进程
[hduser@node1 hadoop]$ jps
##16721 Jps
##15687 NameNode
##15866 SecondaryNameNode
复制代码
启动yarn
[hduser@node1 hadoop]$ sbin/start-yarn.sh
复制代码
查看集群情况
[hduser@node1 hadoop]$ bin/hdfs dfsadmin -report
复制代码
欣赏器查看 HDFS 运行状态:
http://192.168.10.101:50070
复制代码
运行
Hadoop
的
WordCount
步伐
创建测试文件的目次
[hduser@node1 ~]$ mkdir ~/file
复制代码
编辑测试文件
[hduser@node1 ~]$ cd ~/file/
[hduser@node1 file]$ echo "ni hao hadoop">file1.txt
[hduser@node1 file]$ echo "hello hadoop hi china">file2.txt
复制代码
启动hadoop并 创建hdfs目次
[hduser@node1 file]$ cd ~/hadoop/
[hduser@node1 hadoop]$ sbin/start-all.sh
[hduser@node1 hadoop]$ bin/hadoop fs -mkdir /input2
复制代码
将file1和file2拷贝到hdfs存储目次中
[hduser@node1 hadoop]$ bin/hadoop fs -put ~/file/file* /input2/
[hduser@node1 hadoop]$ bin/hadoop fs -ls /input2/
复制代码
执行WordCount步伐,对文件举行统计
[hduser@node1 hadoop]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar wordcount /input2/ /output2/wordcount1
复制代码
注意:输出目次不能已存在,否则不会输出
查看执行结果
[hduser@node1 hadoop]$ bin/hadoop fs -cat /output2/wordcount1/*
复制代码
如果看到输出结果证明hadoop安装成功
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4