hadoop3.0全分布式集群搭建

个人博客原文链接

hadoop3.0的全分布式搭建折腾了好久,因为网上基本上都是2.x的搭建教程,期间有好几个坑比较难弄,不过最后还是都解决了,下面简要记录笔者的搭建过程,以及遇到的坑。

搭建环境:CentOS7+hadoop3.0.3+jdk8
集群配置:1台主节点+3台子节点
主节点:hadoop1
子节点:hadoop2 hadoop3 hadoop4

前提准备

  1. 安装scp服务
  2. 安装配置jdk
  3. 配置静态ip地址
  4. 修改主机名
  5. 配置主机名和ip地址映射
  6. 关闭防火墙,设置开机不自启动
    注:以上操作在笔者之前的Linux相关笔记中均有介绍

正式搭建集群

  1. 在所有机器添加统一用户hadoop
    useradd hadoop
    passwd hadoop
  2. 配置sudo免密
    在root用户下
    vi /etc/sudoers

    root ALL=(ALL) ALL
    下面添加
    hadoop ALL=(ALL) ALL
    修改完退出root用户,回到hadoop用户
  3. 创建hadoop相关目录
    mkdir -p /home/hadoop/apps/dfs/data
    mkdir /home/hadoop/apps/dfs/name
    mkdir /home/hadoop/apps/tmp
  4. 上传并解压hadoop-3.0.3.tar.gz到apps目录下
    sftp上传
    tar -zxvf hadoop-3.0.3.tar.gz -C /home/hadoop/apps/
  5. 配置hadoop-env.sh
    vi /home/hadoop/apps/hadoop-3.0.3/etc/hadoop/hadoop-env.sh
    找到#export JAVA_HOME
    在下面添加
    export JAVA_HOME=/usr/local/jdk
  6. 修改核心配置文件core-site.xml
    vi core-site.xml
    在configuration标签中添加属性
    
        
            fs.defaultFS   #默认
            hdfs://hadoop1:9000 #hdfs的api接口
        
        
            hadoop.tmp.dir #hadoop运行时产生临时数据的存储目录
            /home/hadoop/apps/tmp #该目录的地址
        
    
    
  7. 配置hadoop的底层存储hdfs-site.xml
    vi hdfs-site.xml
    在configuration标签中添加属性
    
            
                    dfs.namenode.secondary.http-address
                    hadoop1:50090
            
            
                    dfs.replication #设置副本个数
                    3
            
            
                    dfs.namenode.name.dir #设置namende数据存放点
                    file:/home/hadoop/apps/dfs/name
            
            
                    dfs.datanode.data.dir #设置datanode数据存放点
                    file:/home/hadoop/apps/dfs/data
            
    
    
  8. 复制并重命名mapred-site.xml.template
    cp mapred-site.xml.template mapred-site.xml
  9. 修改配置文件mapred-site.xml
    vi mapred-site.xml
    在configuration标签中添加属性
    
        
            mapreduce.framwork.name    #设置mapreduce的运行平台的名称
            yarn #设置mapreduce的运行平台为yarn
        
    
    
  10. 修改配置文件yarn-site.xml
    vi yarn-site.xml
    在configuration标签中添加属性
    
        
            yarn.resourcemanager.hostname #指定yarn的老大的地址
            hadoop1
        
        
            yarn.nodemanager.aux-services  #reducer获取数据的方式
            mapreduce_shuffle 
        
     
    
  11. 修改workers文件
    注:这个文件是填写从节点的主机名称
    添加
    hadoop2
    hadoop3
    hadoop4
  12. 将apps文件夹分发到其他机器
    scp -r /home/hadoop/apps hadoop2:/home/hadoop/
    scp -r /home/hadoop/apps hadoop3:/home/hadoop/
    scp -r /home/hadoop/apps hadoop4:/home/hadoop/
  13. 配置hadoop的环境变量
    sudo vi ~/.bash_profile
    添加
    HADOOP_HOME=/home/hadoop/apps/hadoop-3.0.3
    PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    export HADOOP_HOME PATH
    
    重新加载
    source ~/.bash_profile
  14. 在其他机器同样配置hadoop的环境变量
  15. 格式化hdfs(没事不要用这个命令,蛋疼)
    hdfs namenode -format
  16. 配置hadoop用户免密登录
    ssh-keygen
    ssh-copy-id hadoop1
    ssh-copy-id hadoop2
    ssh-copy-id hadoop3
    ssh-copy-id hadoop4
  17. 启动hdfs集群
    start-dfs.sh
    停止hdfs
    stop-dfs.sh
  18. 启动yarn集群
    start-yarn.sh
    停止yarn
    stop-yarn.sh
  19. 启动所有服务(不推荐)
    start-all.sh
    相当于start-dfs.sh+start-yarn.sh
  20. 停止所有服务
    stop-all.sh
  21. 在浏览器查看
    hadoop1:9870
    hadoop1:8088
  22. 查看该集群根目录
    hdfs dfs -ls /
  23. 创建自己的家目录
    hdfs dfs -mkdir /user/xujie
  24. 测试实例
    cd /home/hadoop/apps/hadoop-3.0.3/share/hadoop/mapreduce/
    调用jar包计算pi的值,计算100次
    hadoop jar hadoop-mapreduce-examples-3.0.3.jar pi 3 100

问题汇总

  1. 没有配置文件salves
    解决方案:因为3.0以后slaves更改名称为workers了
  2. 启动所有服务,datanode却没有启动
    一般是hdfs格式化以后运行了程序,然后又格式化了,好了gg,datanode无法启动,因为name的clusterID和data的clusterID不一致了。
    解决方案:
    • 方案一:删除/home/hadoop/apps/dfs/data和/home/hadoop/apps/dfs/name文件夹里的所有内容,重新再hdfs格式化一遍。
    • 方案二:把/home/hadoop/apps/dfs/name/current/VERSION中的clusterID复制替换/home/hadoop/apps/dfs/data/current/VERSION中的clusterID
  3. 启动从节点报错
    解决方案:不要在格式化hdfs以后产生了相关数据以后才scp整个hadoop到其他机器,会产生冲突。

你可能感兴趣的:(大数据)