若有一人的博客

一个在摸索的小白

hadoop处理数据的过程和伪分布式安装部署

hadoop 原理及伪分布搭建


Hadoop:大数据存储及处理工具

                hadoop2.x
HDFS:分布式文件存储系统
MapReduce v2 : 分布式计算模型
YARN:分布式资源管理系统,负责任务调度和集群资源管理
计算机资源:CPU、内存、磁盘、网络

Common:支持其他模块


hadoop处理数据的过程


HDFS:hadoop distribute file system,分布式文件系统

 
     分布式:解决大数据存储问题
     分片机制:将一个文件按照大小自动拆分成多个文件
     默认大小:128M/个  1G=8个block 1000M=8个block
     副本机制:对每个块做备份,默认每个块有3份
     机器1  block1-1 block2-3
     机器2  block1-2  block2-2
     机器3  block2-1    block1-3
    
    文件:250M    ->   block1:128M  block2:122M  
    如何自动的实现文件的切分、文件的合并
    NameNode:主节点,整个hdfs集群中的主节点,负责管理
     负责接收所有用户的请求
      读
      写:负责维护元数据(保存文件的信息:文件的块、存储位置)
       NameNod用户向NameNode发送写的请求e返回文件写入的地址
       用户将数据提交给DataNode
       DataNode将数据写入,并且创建副本
       写入成功后将结果反馈给NameNode
    DataNode:从节点,整个hdfs集群中可以有很多从节点,负责存储

   


YARN:分布式任务调度和资源管理工具

    yarn接收用户提交的任务请求:jar
     ResourceManager:主节点,负责管理,接收用户的请求
       负责资源管理和任务调度
     NodeManager:从节点,负责计算
    执行MapReduce程序
     RM接收到用户的请求
     RM会随机选择一台NM作为该任务的分配节点
     NM向RM申请资源,RM会分配一定的资源打包给NM
     NM会在其他的NM,启动多个map和reduce task任务
     负责的NM会收集执行的结果,汇报给RM

 


MapReduce:分布式计算模型

     input:负责数据的输入,默认是hdfs
     map:将一个大的任务分解成多个小的任务交给每台机器去执行
     shuffle:溢写、分区、排序、分组~~~~~~~~~~~~
     reduce:将所有map的结果进行合并
     output:输出,默认是hdfs
     

     


shuffle流程:   

     input:读取mapreduce输入的
      默认:key是行的偏移量,value是行的内容
     map:负责将数据任务切分,过滤,筛选,转换等一系列的数据任务
         一个块=一个分片=一个map task
     shuffle:分区、排序、分组
       map端的shuffle    
          进入环形缓冲区,默认是100M
          分区:给每一条keyvalue进行计算    
          按照key的hash取余,分配属于哪个进行处理,打标签
          排序:将每个分区内的数据进行排序
          达到80%,开始执行溢写,将数据写入磁盘多个小文件生成
          合并:将多个小文件合并成一个大文件
          排序:将相同分区的数据进行排序
         map task 通知app  master任务执行结束,app master通知reduce
       reduce端的shuffle
         reduce task通过http协议去每个map task的磁盘中拉取属于自己分区的数据
         合并:将每个属于自己分区的数据进行合并
           排序:将分区内所有的数据进行排序
           分组:将相同key的value合并为一条
     reduce:对每条数据调用reduce方法进行处理,将处理后的结果进行合并

     output:将reduce处理后的结果进行输出,默认输出到hdfs



Hadoop的伪分布式安装部署:
Linux环境:
配置网络:固定ip地址、DNS、网络能通外网、本地域名解析(每台机器的文件中包含所有机器的地址和主机名)
本地域名解析映射
hostname:用于查看或者修改主机名
临时修改:hostname ignore.com
永久修改:vim /etc/sysconfig/network
 
vim /etc/sysconfig/network-scripts/ifcfg-eth0
service network restart : 重启网络服务
本地主机名与网络映射
表示自己:127.0.0.1  0.0.0.0  localhost
vim  /etc/hosts  :本地映射文件(DNS)
关闭防火墙和selinux
service iptables stop 
chkconfig iptables off
vim /etc/selinux/config 
SELINUX=disabled
普通用户:专门负责管理大数据应用:ignore
visudo:用于配置普通用户执行高级权限命令
visudo:本质上就是修改了配置文件:/etc/sudoers
root     ALL = (ALL)      ALL
配置:

ignore              ALL=(ALL)               NOPASSWD:ALL

    

       ntp时间同步

       ssh免密钥登录:


安装jdk
检查自带jdk是否已经卸载
rpm -qa | grep java
解压
tar -zxvf jdk-8u91-linux-x64.tar.gz -C /opt/modules/
配置环境变量
   全局环境变量:
        sudo vim /etc/profile
export JAVA_HOME=/opt/modules/jdk1.8.0_91
export PATH=$PATH:$JAVA_HOME/bin
重新加载配置文件
source /etc/profile
检测

java -version


安装hadoop: /opt/modules/

下载解压:http://archive.apache.org/dist/
tar -zxvf /opt/tools/hadoop-2.7.3.tar.gz -C /opt/modules/
目录结构:
bin:命令
etc/conf/config/:配置文件
lib:依赖jar包
data/tmp:临时数据存储目录
logs:日志文件目录

sbin:启动脚本,管理类的命令

修改配置文件: 


修改env文件:用于配置环境变量

hadoop-env.sh


mapred-env.sh


yarn-env.sh


修改xml文件:
core-site.xml
hdfs地址
hadoop临时目录
<!-- 用于设置hdfs的入口 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ignore.com:8020</value>
</property>
<!-- 设置hadoop的临时存储目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/modules/hadoop-2.7.3/datas</value>
</property>
hdfs-site.xml
副本数 
权限关闭
<!--用于设置hdfs的副本数-->
<property>
 <name>dfs.replication</name>
 <value>1</value>
</property>
<!--用于关闭hdfs的权限检查-->
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
mapred-site.xml
  运行框架在yarn
<!--指定mapreduce运行在yarn上-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
jobhistoryserver:
<!--配置jobhistory服务-->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hostname.com:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hostname.com:19888</value>
</property>
                yarn-site.xml
mapreduce运行方式
<!--MapReduce运行方式,包含shuffle过程-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
resourcemanager的地址
<!--指定resourcemanager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hostname.com</value>
</property>

日志聚集
<!--配置日志聚合-->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 存储时间 (秒) -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
<!-- 检测频率 (秒)-->
<property>
<name>yarn.log-aggregation.retain-check-interval-seconds</name>
<value>60480</value>
</property>
slaves:从节点配置:
ignore.com

在${HADOOP_HOME} 目录下格式化:
bin/hdfs namenode -format
启动测试:
${HADOOP}/sbin/hadoop-daemon.sh start namenode
${HADOOP}/sbin/hadoop-daemon.sh start datanode
${HADOOP}/sbin/yarn-daemon.sh start resourcemanager
${HADOOP}/sbin/yarn-daemon.sh start nodemanager
${HADOOP}/sbin/mr-jobhistory-daemon.sh start historyserver













阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34708892/article/details/79974462
上一篇Scala 安装(Windows+Linux+IDEA)
下一篇Python requests+BeautifulSoup 采集 安居客_新房信息
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭