美文网首页
大数据学习之Hadoop

大数据学习之Hadoop

作者: 我问你瓜保熟吗 | 来源:发表于2021-04-25 08:16 被阅读0次

    一、基础概念

    Hadoop包含HDFS和MapReduce,HDFS实现分布式存储,MapReduce实现数据分布式计算。
    HDFS:

    HDFS是由Namenode和Datanode组成。Namenode负责管理文件系统的namespace和客户端对文件的访问。Datanode负责管理节点上的存储。在内部,一个文件其实分成一个或多个block,这些block存储在Datanode集合里。Namenode执行文件系统的namespace操作,例如打开、关闭、重命名文件和目录,同时决定block到具体Datanode节点的映射。Datanode在Namenode的指挥下进行block的创建、删除和复制。

    yarn

    NameNode Active
    NameNode Standby
    datanode
    NodeManager
    ResourceManager
    JournalNode
    QuorumPeerMain:zookeeper进程
    FailoverController:NameNode故障转移

    二、安装配置

    • 下载安装包解压到:/usr/local/hadoop
    • 环境变量:vim /etc/profile
    export HADOOP_HOME=/usr/local/hadoop
    export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
    
    • 编辑配置文件
    1. core-site.xml
    • 配置Service的URL地址、Hadoop集群临时目录等信息
    • 使用 fs.default.name 还是 使用 fs.defaultFS ,要首先判断是否开启了 NN 的HA (namenode 的 highavaliable),如果开启了nn ha,那么就用fs.defaultFS,在单一namenode的情况下,就用 fs.default.name
    <configuration>
    
            <!-- 配置HDFS的老大(namenode)的地址 -->
            <property>
                    <name>fs.default.name</name>
                    <value>hdfs://cluster1</value>
            </property>
    
            <!-- 配置hadoop运行时产生的文件的目录 -->
            <property>
                    <name>hadoop.tmp.dir</name>
                    <value>/usr/local/hadoop/tempdata</value>
            </property>
    
            <!-- 指定Zookeeper地址 -->
            <property>
                    <name>ha.zookeeper.quorum</name>
                    <value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
            </property>
    
    </configuration>
    
    1. hdfs-site.xml

    配置Hadoop集群的HDFS别名、通信地址、端口等信息。

    <configuration>
    <property>
      <name>dfs.replication</name>
      <value>3</value>
    </property>
    
    <!-- namenode节点数据(即元数据)的存放位置,可以指定多个目录实现容错,多个目录用逗号分隔 -->
    <property>
      <name>dfs.namenode.name.dir</name>
      <value>/usr/local/hadoop/hadoopdata/namenode</value>
    </property>
    
    <!-- datanode节点数据(即数据块)的存放位置 -->
    <property>
      <name>dfs.datanode.data.dir</name>
      <value>/usr/local/hadoop/hadoopdata/datanode</value>
    </property>
    
    <!-- JournalNode的元数据在JournalNode上的存放位置 -->
    <property>
      <name>dfs.journalnode.edits.dir</name>
      <value>/usr/local/hadoop/hadoopdata/journalnode</value>
    </property>
              
    <!-- 指定HDFS的NameService为cluster1,需要和core-site.xml中保持一致 -->
    <property>
      <name>dfs.nameservices</name>
      <value>cluster1</value>
    </property> 
    
    <!--cluster1中有两个NameNode,分别是hadoop01节点和hadoop02节点--> 
    <property>
      <name>dfs.ha.namenodes.cluster1</name>
      <value>hadoop01,hadoop02</value>
    </property> 
        
    <!--hadoop01节点的RPC通讯地址-->
    <property>
      <name>dfs.namenode.rpc-address.cluster1.hadoop01</name>
      <value>hadoop01:9000</value> 
    </property>
    <!--hadoop02节点的RPC通讯地址-->
    <property>
      <name>dfs.namenode.rpc-address.cluster1.hadoop02</name>
      <value>hadoop02:9000</value>
    </property>
    
    <!--hadoop01的http地址-->
    <property>
      <name>dfs.namenode.http-address.cluster1.hadoop01</name>
      <value>hadoop01:50070</value>
    </property>
    <!--hadoop02的http地址-->
    <property>
      <name>dfs.namenode.http-address.cluster1.hadoop02</name>
      <value>hadoop02:50070</value>
    </property>
    
    <!-- 指定NameNode的元数据在JournalNode上的共享存储存放位置-->
    <property>
      <name>dfs.namenode.shared.edits.dir</name>
      <value>qjournal://hadoop03:8485;hadoop04:8485;hadoop05:8485/cluster1</value>
    </property>
    
    <!-- 指定 cluster1 出故障时,哪个实现类负责执行故障切换-->
    <property>
      <name>dfs.client.failover.proxy.provider.cluster1</name>
      <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
    
    <!-- 配置隔离机制,确保在任何给定时间只有一个NameNode处于活动状态 -->
    <property>
      <name>dfs.ha.fencing.methods</name>
      <value>sshfence</value>
    </property>
    <!-- 使用sshfence机制时需要ssh免密登录 -->
    <property>
     <name>dfs.ha.fencing.ssh.private-key-files</name>
     <value>/home/hadoop/.ssh/id_rsa</value>
    </property>
    <!-- 开启高可用,故障自动转移 -->
    <name>dfs.ha.automatic-failover.enabled</name>
      <value>true</value>
    </property>
    
    <!-- 指定可以通过web访问HDFS目录-->
    <property>
      <name>dfs.webhdfs.enabled</name>
      <value>true</value>
    </property>
    <!-- 保证数据恢复,通过0.0.0.0来保证内网地址和外网地址都可以访问-->
    <property>
      <name>dfs.journalnode.http-address</name>
      <value>0.0.0.0:8480</value>
    </property>
    <property>
      <name>dfs.journalnode.rpc-address</name>
      <value>0.0.0.0:8480</value>
    </property>
    
    <!-- 通过ZKFailoverController来实现自动故障切换-->
    <property>
      <name>ha.zookeeper.quorum</name>
      <value>hadoop03:2181,hadoop04:2181,hadoop05:2181</value>
    </property>
    
    </configuration>                                  
    
    1. map-site.xml

    计算框架资源管理名称、历史任务访问地址等信息。

    <configuration>
    <!--计算任务托管的资源框架名称-->
    <property>
      <name>mapreduce.framework.name</name>    
      <value>yarn</value>
    </property>
    <!--配置 MapReduce JobHistory Server 地址,默认端口 1002000-->
    <property>
      <name>mapreduce.jobhistory.address</name>    
      <value>0.0.0.0:10020</value>  
    </property>
    <!--配置 MapReduce JobHistory Server Web 地址,默认端仁 19888 -->
    <property>
      <name>mapreduce.jobhistory.webapp.address</name>      
      <value>0.0.0.0:19888</value>      
    </property>
    </configuration>
    
    1. yarn-site.xml

    配置yarn-site.xml,Hadoop 资源管理通过 YARN 来完成资源相关分配 作业的调度与监控及数据的共
    享等。

    
    

    相关文章

      网友评论

          本文标题:大数据学习之Hadoop

          本文链接:https://www.haomeiwen.com/subject/xmvkrltx.html