美文网首页
Hadoop集群搭建

Hadoop集群搭建

作者: 霹雳解锋镝 | 来源:发表于2019-08-21 11:25 被阅读0次
一、集群准备
1、修改主机名
2、修改 IP 地址
3、添加主机名和 IP 映射
4、同步服务器时间
5、关闭防火墙
6、配置免密登录
7、安装JDK
二、集群配置
1、修改配置文件hadoop-env.sh

    export JAVA_HOME=/home/jdk1.8.0_181
2、修改配置文件core-site.xml
    
    <!-- 指定hdfs的nameservice为ns 与hdfs-site对应 --> 
    <property> 
        <name>fs.defaultFS</name> 
        <value>hdfs://ns</value> 
    </property> 
    <!--指定hadoop数据临时存放目录--> 
    <property> 
        <name>hadoop.tmp.dir</name> 
        <value>/opt/module/hadoop-2.7.2/tmp</value> 
    </property> 

    <property> 
        <name>io.file.buffer.size</name> 
        <value>4096</value> 
    </property> 
    <!--指定zookeeper地址--> 
    <property> 
        <name>ha.zookeeper.quorum</name> 
        <value>hadoop130:2181,hadoop131:2181,hadoop132:2181</value> 
    </property> 
3、修改配置文件hdfs-site.xml

    <!--指定hdfs的nameservice为ns,需要和core-site.xml中的保持一致 -->      
    <property>      
        <name>dfs.nameservices</name>      
        <value>ns</value>      
    </property>  
    
    <!--NameNode配置-->
    <!-- ns下面有两个NameNode,分别是nn1,nn2 -->  
    <property>  
       <name>dfs.ha.namenodes.ns</name>  
       <value>nn1,nn2</value>  
    </property>  
    <!-- nn1的RPC通信地址 -->  
    <property>  
       <name>dfs.namenode.rpc-address.ns.nn1</name>  
       <value>hadoop130:9000</value>  
       <description>指定第一个NameNode的RPC位置</description>
    </property>  
    <!-- nn1的http通信地址 -->  
    <property>  
        <name>dfs.namenode.http-address.ns.nn1</name>  
        <value>hadoop130:50070</value>  
    </property>  
    <!-- nn2的RPC通信地址 -->  
    <property>  
        <name>dfs.namenode.rpc-address.ns.nn2</name>  
        <value>hadoop131:9000</value>  
    </property>  
    <!-- nn2的http通信地址 -->  
    <property>  
        <name>dfs.namenode.http-address.ns.nn2</name>  
        <value>hadoop131:50070</value>  
    </property>  
    
    <!--JournalNode配置-->
    <!-- 指定NameNode的元数据在JournalNode上的存放位置 -->  
    <property>  
         <name>dfs.namenode.shared.edits.dir</name>  
         <value>qjournal://hadoop130:8485;hadoop131:8485;hadoop132:8485/ns</value>  
    </property>  
    <!-- 指定JournalNode在本地磁盘存放数据的位置 -->  
    <property>  
          <name>dfs.journalnode.edits.dir</name>  
          <value>/opt/module/hadoop-2.7.2/journaldata</value>  
    </property>  
    
    <!-- 开启NameNode故障时自动切换 -->  
    <property>  
          <name>dfs.ha.automatic-failover.enabled</name>  
          <value>true</value>  
    </property>  
    <!-- 配置失败自动切换实现方式 -->  
    <property>  
            <name>dfs.client.failover.proxy.provider.ns</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>/home/hadoop/.ssh/id_rsa</value>
    </property>
    
    <!-- 配置sshfence隔离机制超时时间 -->
    <property>
        <name>dfs.ha.fencing.ssh.connect-timeout</name>
        <value>30000</value>
    </property> 
    
    
    <property>      
        <name>dfs.namenode.name.dir</name>      
        <value>file:///opt/module/hadoop-2.7.2/hdfs/name</value>      
    </property>      
      
    <property>      
        <name>dfs.datanode.data.dir</name>      
        <value>file:///opt/module/hadoop-2.7.2/hdfs/data</value>      
    </property>      
      
    <property>      
       <name>dfs.replication</name>      
       <value>2</value>      
    </property>     
    <!-- 在NN和DN上开启WebHDFS (REST API)功能,不是必须 -->                                                                      
    <property>      
       <name>dfs.webhdfs.enabled</name>      
       <value>true</value>      
    </property>
4、修改配置文件yarn-site.xml

    <!-- 开启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>hadoop130</value>
    </property>
    <property>
       <name>yarn.resourcemanager.hostname.rm2</name>
       <value>hadoop132</value>
    </property>
    
    <property>
    <name>yarn.resourcemanager.webapp.address.rm1</name>
    <value>hadoop130:8088</value>
    </property>
    <property>
    <name>yarn.resourcemanager.webapp.address.rm2</name>
    <value>hadoop132:8088</value>
    </property>
    
    <!-- 指定zk集群地址 -->
    <property>
       <name>yarn.resourcemanager.zk-address</name>
       <value>hadoop130:2181,hadoop131:2181,hadoop132:2181</value>
    </property>
    
    <property>
       <name>yarn.nodemanager.aux-services</name>
       <value>mapreduce_shuffle</value>
    </property>
    
    <!--resourcemanager挂了 重启后之前正在运行的任务接着运行-->
    <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>
        <!--<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.FileSystemRMStateStore</value>-->
    </property>
5、修改配置文件mapred-site.xml

    <!-- 指定mr框架为yarn方式 -->
    <property>
       <name>mapreduce.framework.name</name>
       <value>yarn</value>
    </property>
   <!-- <property>
       <name>mapreduce.jobhistory.address</name>
       <value>node2:10020</value>
    </property>
    <property>
       <name>mapreduce.jobhistory.webapp.address</name>
       <value>node2:19888</value>
    </property>
    <property>
       <name>mapred.system.dir</name>
       <value>/home/hadoop/hadoop/hadoopmrsys</value>
       <final>true</final>
    </property>
    <property>
       <name>mapred.local.dir</name>
       <value>/home/hadoop/hadoop/hadoopmrlocal</value>
       <final>true</final>
    </property>-->
三、集群操作命令
1、集群启动命令
    (1)先启动zookeeper集群
        zkServer.sh start
        检查是否成功启动
    (2)启动journalnode
        sbin/hadoop-daemons.sh start journalnode
        检查是否成功启动
    (3)namenode上执行格式化
        bin/hdfs namenode -format
    (4)格式化ZKFC
        hdfs zkfc -formatZK
    (5)启动HDFS
        sbin/start-dfs.sh
        查看日志是否启动成功
        若另外一台服务器namenode没有启动成功,
        同步镜像文件:bin/hdfs namenode -bootstrapStandby
        再次启动namenode:sbin/hadoop-daemon.sh start namenode
    (6)启动yarn
        sbin/start-yarn.sh
        sbin/yarn-daemon.sh stop resourcemanager

        访问hdfs地址:http://hadoop130:50070
        访问yarn地址:http://hadoop130:8088
2、集群操作命令
    (1)常用
        hadoop fs -ls /
        hadoop fs -mkdir -p /sanguo/shuguo
        hadoop fs -cat /sanguo/shuguo/kongming.txt
        hadoop fs -cp /sanguo/shuguo/kongming.txt /zhuge.txt
        hadoop fs -mv /zhuge.txt /sanguo/shuguo/
        hadoop fs -rm /user/atguigu/test/jinlian2.txt
    (2)-moveFromLocal从本地剪切粘贴到hdfs
        touch kongming.txt
        hadoop fs  -moveFromLocal  ./kongming.txt  /sanguo/shuguo
    (3)-appendToFile  :追加一个文件到已经存在的文件末尾
        hadoop-2.7.2]$ hadoop fs -appendToFile liubei.txt /sanguo/shuguo/kongming.txt
    (4)-tail:显示一个文件的末尾  
        hadoop fs -tail /sanguo/shuguo/kongming.txt
    (5)-chgrp 、-chmod、-chown:linux文件系统中的用法一样,修改文件所属权限
        hadoop fs  -chmod  666  /sanguo/shuguo/kongming.txt
        hadoop fs  -chown  atguigu:atguigu   /sanguo/shuguo/kongming.txt
    (6)-copyFromLocal:从本地文件系统中拷贝文件到hdfs路径去
        hadoop fs -copyFromLocal README.txt /
    (7)-copyToLocal:从hdfs拷贝到本地
        hadoop fs -copyToLocal /sanguo/shuguo/kongming.txt ./
    (8)-get:等同于copyToLocal,就是从hdfs下载文件到本地
        hadoop fs -get /sanguo/shuguo/kongming.txt ./
    (9)-getmerge  :合并下载多个文件,比如hdfs的目录 /aaa/下有多个文件:log.1, log.2,log.3,...
        hadoop fs -getmerge /user/atguigu/test/* ./zaiyiqi.txt
    (10)-put:等同于copyFromLocal
        hadoop fs -put ./zaiyiqi.txt /user/atguigu/test/
    (11)-du统计文件夹的大小信息
        hadoop fs -du -s -h /user/atguigu/test
        hadoop fs -du  -h /user/atguigu/test
    (12)-setrep:设置hdfs中文件的副本数量
        hadoop fs -setrep 10 /sanguo/shuguo/kongming.txt
四、集群常见错误
1、服务器时间没有同步
2、镜像文件没有同步

相关文章

网友评论

      本文标题:Hadoop集群搭建

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