zoukankan      html  css  js  c++  java
  • hadoop远程调试和配置HA

    join:
        Map端join    //大表+小表,只需要map
        Reduce端join    //大表+大表,需要Map和Reduce
                //设计组合key和flag
                //分组对比器
    
    
    Json:
        fastJson技术
        JSON.parseObject(str)    //将string转成jsonObject
        jo.get(key)        //得到json串指定的key所对应的value,String形式
        jo.getJsonArray        //得到json串指定的key所对应的value,数组形式
    
    
    taggen:
        解析商家评论标签数据,并将其标签数量进行倒排序
        重点:定义TreeSet,在set中自定义可排序的对象
    
    
        
    在MR1代和MR2代资源调度区别:
        1、一代中节点名称称为jobTracker(主节点)和taskTracker
           二代中节点名称称为ResourceManager(主节点)和NodeManager
    
        2、jobTracker充当所有资源分配和调度,和节点分配
           ResourceManager只负责分配资源,然后在从节点启动MRAppMaster进程,由AppMaster负责所有作业的执行和监控
    
    
    如何进行远程调试:
        原因:在本地客户端无法直接向集群提交MR作业
    
        远程调试:
            1、服务端:Linux(监听)
                java -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=192.168.23.101:8888 -cp myhadoop-1.0-SNAPSHOT.jar Helloworld
            2、客户端:IDEA(连接)
                在类名下,Edit Configuration ==> + Remote, 修改Port和host,然后可以进行debug
    
        
    远程调试hadoop程序:
        修改${HADOOP_HOME}etchadoophadoop-env.sh文件
        添加如下行:
            export HADOOP_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=192.168.23.101:8888"
    
        从ResourceMgrDelegate提交到YarnClientImpl
    
        Rpc和Ipc的调用:
            RPC:远程过程调用,在hadoop的RPC中使用的是串行化技术
            IPC:进程间通信,也是使用串行化技术
    
    HA:高可用:
        使用两个namenode,避免出现问题
    
        1、高可用的问题:
            两个namenode同时运行,会发生脑裂
            一个节点处于active状态
            另一个节点处于standby状态    //待命状态
    
        2、数据同步问题:
            JournalNode:在两个namenode之间负责数据的同步,一般配置在datanode上
    
    高可用配置:
    =====================================
        hdfs-site.xml
        --------------------------------------------------------
    <!-- 名字空间的逻辑名称 -->
    <property>
      <name>dfs.nameservices</name>
      <value>mycluster</value>
    </property>
    
    <!-- 指向两个namenode -->
    <property>
      <name>dfs.ha.namenodes.mycluster</name>
      <value>nn1,nn2</value>
    </property>
    
    <!-- 配置namenode的rpc地址 -->
    <property>
      <name>dfs.namenode.rpc-address.mycluster.nn1</name>
      <value>s101:8020</value>
    </property>
    <property>
      <name>dfs.namenode.rpc-address.mycluster.nn2</name>
      <value>s105:8020</value>
    </property>
    
    <!-- 配置namenode的HTTP端口 -->
    <property>
      <name>dfs.namenode.http-address.mycluster.nn1</name>
      <value>s101:50070</value>
    </property>
    <property>
      <name>dfs.namenode.http-address.mycluster.nn2</name>
      <value>s105:50070</value>
    </property>
    
    <!-- 配置journalnode地址,配置在datanode地址-->
    <property>
      <name>dfs.namenode.shared.edits.dir</name>
      <value>qjournal://s102:8485;s103:8485;s104:8485/mycluster</value>
    </property>
    
    <!-- 配置容灾代理,默认即可 -->
    <property>
      <name>dfs.client.failover.proxy.provider.mycluster</name>
      <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
    
    <!-- 配置防护手段,使用shell(/bin/true) -->
    <property>
        <name>dfs.ha.fencing.methods</name>
        <value>shell(/bin/true)</value>
    </property>
    
        core-site.xml
        ---------------------------------------
        <!-- 使用逻辑名称来确定文件系统 -->
    <property>
      <name>fs.defaultFS</name>
      <value>hdfs://mycluster</value>
    </property>
    <!-- journalnode工作目录地址 -->
    <property>
      <name>dfs.journalnode.edits.dir</name>
      <value>/home/centos/hadoop/full/journal</value>
    </property>
    
        1、配置完成之后分发文件:
    
        2、配置s105的ssh免密登陆:直接拷贝s101上的私钥也可以
            ssh-copy-id centos@s101
            ssh-copy-id centos@s102
            ssh-copy-id centos@s103
            ssh-copy-id centos@s104
            ssh-copy-id centos@s105
    
        3、将namenode中的工作目录全部分发到s105
            rsync -lr ~/hadoop centos@s105:~
    
        4、启动journalnode:s101
            hadoop-daemons.sh start journalnode
    
        5、hdfs namenode -initializeSharedEdits
    
        6、启动进程:start-dfs.sh
    
        7、将namenode变为active状态
            hdfs haadmin -transitionToActive nn1
    
            
    聚类:
        将看似无关的集合,变成一个个有相关性的簇
    
        举例:将星星的集合看成星团的过程叫作聚类
    
        聚类算法多用于推荐或将数据分组
    
    聚类的做法:k-means聚类
        计算数据间的距离:欧式距离
    
        1、读取中心点
        2、将中心点和map中的所有行进行比较,并计算出距离
           输出组(簇)号和组(簇)数据
         
        3、在reduce端对数据进行重新聚合并更新中心点
    
        4、每次迭代MR,直到中心数据不再变化,判断MR作业何时到达末尾
            
    
    
    距离:
        1、欧式距离    //欧几里得距离a(1,0)  b(1,2)   √(x1-x2)^2 + (y1-y2)^2    √
        2、曼哈顿距离    //|x1-x2| + |y1-y2|
        3、切比雪夫距离    //min{(x1-x2),(y1-y2)}    应用在概率场景
    
        当物理维度超过三维,欧式距离就失去了意义,只能作为距离的一个衡量标准
  • 相关阅读:
    PAT 1097. Deduplication on a Linked List (链表)
    PAT 1096. Consecutive Factors
    PAT 1095. Cars on Campus
    PAT 1094. The Largest Generation (层级遍历)
    PAT 1093. Count PAT's
    PAT 1092. To Buy or Not to Buy
    PAT 1091. Acute Stroke (bfs)
    CSS:word-wrap/overflow/transition
    node-webkit中的requirejs报错问题:path must be a string error in Require.js
    script加载之defer和async
  • 原文地址:https://www.cnblogs.com/zyde/p/9225165.html
Copyright © 2011-2022 走看看