zoukankan      html  css  js  c++  java
  • hadoop 随笔2

    参考:
    https://www.cnblogs.com/qingyunzong/p/8634335.html
    https://my.oschina.net/finchxu/blog/3077481

    规划:
    zookeeper*3 + namenode*2 + datanode*2
    ip:
    192.168.80.166  nn1.hadoop  zookeeper + namenode
    192.168.80.167  nn2.hadoop  zookeeper + namenode
    192.168.80.168  s1.hadoop   zookeeper + datenode
    192.168.80.169  s2.hadoop   datenode

    创建hadoop用户
    关闭防火墙
    关闭selinux
    修改 hostname
    hadoop用户 ssh-keygen -t rsa  免密相互登陆

    sudo mkdir -p /data/hadoopdata/
    sudo chown -R hadoop:hadoop /data

    关键配置:
    cd /usr/local/hadoop/etc/hadoop
    vi core-site.xml

    <configuration>
        <!-- 指定hdfs的nameservice为myha01 -->
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://myha01/</value>
        </property>

        <!-- 指定hadoop临时目录 -->
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/data/hadoopdata/</value>
        </property>

        <!-- 指定zookeeper地址 -->
        <property>
            <name>ha.zookeeper.quorum</name>
            <value>nn1.hadoop:2181,nn2.hadoop:2181,s1.hadoop:2181</value>
        </property>

        <!-- hadoop链接zookeeper的超时时长设置 -->
        <property>
            <name>ha.zookeeper.session-timeout.ms</name>
            <value>1000</value>
            <description>ms</description>
        </property>
    </configuration>


    vi hdfs-site.xml

    <configuration>

        <!-- 指定副本数 -->
        <property>
            <name>dfs.replication</name>
            <value>2</value>
        </property>

        <!-- 配置namenode和datanode的工作目录-数据存储目录 -->
        <property>
            <name>dfs.namenode.name.dir</name>
            <value>/data/hadoopdata/dfs/name</value>
        </property>
        <property>
            <name>dfs.datanode.data.dir</name>
            <value>/data/hadoopdata/dfs/data</value>
        </property>

        <!-- 启用webhdfs -->
        <property>
            <name>dfs.webhdfs.enabled</name>
            <value>true</value>
        </property>

        <!--指定hdfs的nameservice为myha01,需要和core-site.xml中的保持一致
                     dfs.ha.namenodes.[nameservice id]为在nameservice中的每一个NameNode设置唯一标示符。
            配置一个逗号分隔的NameNode ID列表。这将是被DataNode识别为所有的NameNode。
            例如,如果使用"myha01"作为nameservice ID,并且使用"nn1"和"nn2"作为NameNodes标示符
        -->
        <property>
            <name>dfs.nameservices</name>
            <value>myha01</value>
        </property>

        <!-- myha01下面有两个NameNode,分别是nn1,nn2 -->
        <property>
            <name>dfs.ha.namenodes.myha01</name>
            <value>nn1,nn2</value>
        </property>

        <!-- nn1的RPC通信地址 -->
        <property>
            <name>dfs.namenode.rpc-address.myha01.nn1</name>
            <value>nn1.hadoop:9000</value>
        </property>

        <!-- nn1的http通信地址 -->
        <property>
            <name>dfs.namenode.http-address.myha01.nn1</name>
            <value>nn1.hadoop:50070</value>
        </property>

        <!-- nn2的RPC通信地址 -->
        <property>
            <name>dfs.namenode.rpc-address.myha01.nn2</name>
            <value>nn2.hadoop:9000</value>
        </property>

        <!-- nn2的http通信地址 -->
        <property>
            <name>dfs.namenode.http-address.myha01.nn2</name>
            <value>nn2.hadoop:50070</value>
        </property>

        <!-- 指定NameNode的edits元数据的共享存储位置。也就是JournalNode列表
                     该url的配置格式:qjournal://host1:port1;host2:port2;host3:port3/journalId
            journalId推荐使用nameservice,默认端口号是:8485 -->
        <property>
            <name>dfs.namenode.shared.edits.dir</name>
            <value>qjournal://nn1.hadoop:8485;nn2.hadoop:8485/myha01</value>
        </property>

        <!-- 指定JournalNode在本地磁盘存放数据的位置 -->
        <property>
            <name>dfs.journalnode.edits.dir</name>
            <value>/data/journaldata</value>
        </property>

        <!-- 开启NameNode失败自动切换 -->
        <property>
            <name>dfs.ha.automatic-failover.enabled</name>
            <value>true</value>
        </property>

        <!-- 配置失败自动切换实现方式 -->
        <property>
            <name>dfs.client.failover.proxy.provider.myha01</name>
            <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
        </property>

        <!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行 -->
        <property>
            <name>dfs.ha.fencing.methods</name>
            <value>
                sshfence
                shell(/bin/true)
            </value>
        </property>

        <!-- 使用sshfence隔离机制时需要ssh免登陆 -->
        <property>
            <name>dfs.ha.fencing.ssh.private-key-files</name>
            <value>/opt/hadoop/.ssh/authorized_keys</value>
        </property>

        <!-- 配置sshfence隔离机制超时时间 -->
        <property>
            <name>dfs.ha.fencing.ssh.connect-timeout</name>
            <value>30000</value>
        </property>

        <property>
            <name>ha.failover-controller.cli-check.rpc-timeout.ms</name>
            <value>60000</value>
        </property>
    </configuration>





    vi mapred-site.xml

    <configuration>
        <!-- 指定mr框架为yarn方式 -->
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
        
        <!-- 指定mapreduce jobhistory地址 -->
        <property>
            <name>mapreduce.jobhistory.address</name>
            <value>nn1.hadoop:10020</value>
        </property>
        
        <!-- 任务历史服务器的web地址 -->
        <property>
            <name>mapreduce.jobhistory.webapp.address</name>
            <value>nn1.hadoop:19888</value>
        </property>
    </configuration>



    vi yarn.site.xml

    <configuration>
        <!-- 开启RM高可用 -->
        <property>
            <name>yarn.resourcemanager.ha.enabled</name>
            <value>true</value>
        </property>

        <!-- 指定RM的cluster id -->
        <property>
            <name>yarn.resourcemanager.cluster-id</name>
            <value>yrc</value>
        </property>

        <!-- 指定RM的名字 -->
        <property>
            <name>yarn.resourcemanager.ha.rm-ids</name>
            <value>rm1,rm2</value>
        </property>

        <!-- 分别指定RM的地址 -->
        <property>
            <name>yarn.resourcemanager.hostname.rm1</name>
            <value>s1.hadoop</value>
        </property>

        <property>
            <name>yarn.resourcemanager.hostname.rm2</name>
            <value>s2.hadoop</value>
        </property>

        <!-- 指定zk集群地址 -->
        <property>
            <name>yarn.resourcemanager.zk-address</name>
            <value>nn1.hadoop:2181,nn2.hadoop:2181,s1.hadoop:2181</value>
        </property>

        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>

        <property>
            <name>yarn.log-aggregation-enable</name>
            <value>true</value>
        </property>

        <property>
            <name>yarn.log-aggregation.retain-seconds</name>
            <value>86400</value>
        </property>

        <!-- 启用自动恢复 -->
        <property>
            <name>yarn.resourcemanager.recovery.enabled</name>
            <value>true</value>
        </property>

        <!-- 制定resourcemanager的状态信息存储在zookeeper集群上 -->
        <property>
            <name>yarn.resourcemanager.store.class</name>
            <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
        </property>
    </configuration>




    HDFS命令

            创建一个文件夹    hdfs dfs -mkdir /myTask
            创建多个文件夹    hdfs dfs -mkdir -p /myTask1/input1
            上传文件 hdfs dfs -put /opt/wordcount.txt /myTask/input
            查看总目录下的文件和文件夹 hdfs dfs -ls /
            查看myTask下的文件和文件夹 hdfs dfs -ls /myTask
            查看myTask下的wordcount.txt的内容 hdfs dfs -cat /myTask/wordcount.txt
            删除总目录下的myTask2文件夹以及里面的文件和文件夹 hdfs dfs -rmr /myTask2
            删除myTask下的wordcount.txt hdfs dfs -rmr /myTask/wordcount.txt
            下载hdfs中myTask/input/wordcount.txt到本地opt文件夹中 hdfs dfs -get /myTask/input/wordcount.txt /opt

    原文链接:https://blog.csdn.net/tswc_byy/article/details/90577551

  • 相关阅读:
    PHP、JAVA、C#、Object-C 通用的DES加密
    xtraScrollableControl 滚动条随鼠标滚动
    C#让TopMost窗体弹出并置顶层但不获取当前输入焦点的终极办法
    C#获取“所有用户桌面”的路径
    C#如何获取快捷方式指向的目标文件
    10
    09
    新浪微博中tableview中头部信息
    ASIHTTPRequest类库简介和使用说明
    IOS常用设计模式之委托模式
  • 原文地址:https://www.cnblogs.com/walkersss/p/12781599.html
Copyright © 2011-2022 走看看