zoukankan      html  css  js  c++  java
  • Hadoop全分布模式安装部署


    Hadoop介绍

    • Hadoop的框架最核心的设计就是:HDFS和MapReduce
      • HDFS为海量的数据提供了存储
      • MapReduce为海量的数据提供了计算
    • 把HDFS理解为一个分布式的,有冗余备份的,可以动态扩展的用来存储大规模数据的大硬盘
    • 把MapReduce理解成为一个计算引擎,按照MapReduce的规则编写Map计算/Reduce计算的程序,可以完成计算任务

    实验

    实验环境

    主机名 RHEL版本 IP地址
    Master-bad RHEL 7.0 192.168.43.130
    slave01-bad RHEL 7.0 Min 192.168.43.129
    slave02-bad RHEL 7.4 192.168.43.131

    修改主机名

    • Master-bad设置主机名
    [root@server ~]# hostnamectl set-hostname Master-bad
    [root@server ~]# bash
    [root@master-bad ~]#
    

    在其他两台主机做相同操作,修改成相应的主机名

    配置主机域名映射

    • master-bad配置域名映射
    [root@master-bad ~]# vim /etc/hosts
    192.168.43.129 slave01-bad
    192.168.43.130 master-bad
    192.168.43.131 slave02-bad
    [root@master-bad ~]# 
    

    在其他两台主机做相同的配置,配置域名映射

    关闭防火墙

    • master-bad上关闭防火墙
    [root@master-bad ~]# systemctl stop firewalld  //关闭防火墙
    [root@master-bad ~]# systemctl disable firewalld  //禁止开机自启
    

    在另外两台主机做相同的操作,关闭防火墙

    关闭selinux

    • master-bad上关闭selinux
    [root@master-bad ~]# vim /etc/selinux/config 
    SELINUX=disabled 
    

    在另外两台主机做相同的配置,关闭selinux

    配置yum仓库

    • master-bad上配置yum仓库
    [root@master-bad yum.repos.d]# vim rhel.repo
    [Base]
    name=RHEL
    baseurl=file:///mnt
    gpgcheck=0
    enabled=1
    [root@master-bad yum.repos.d]# mount /dev/cdrom /mnt/
    mount: /dev/sr0 写保护,将以只读方式挂载
    [root@master-bad yum.repos.d]# yum clean all 
    [root@master-bad yum.repos.d]# yum repolist 
    源标识                            源名称                           状态
    Base                              RHEL                             4,305
    repolist: 4,305
    [root@master-bad yum.repos.d]# 
    

    在另外两台主机做相同的配置,配置yum仓库

    安装并配置NTP服务,用于时间同步

    master-bad配置:

    • 安装NTP
    [root@master-bad ~]# yum -y install ntp
    
    • 配置ntp,并设置开机自启
    [root@master-bad ~]# vim /etc/ntp.conf  //在配置文件中加入以下内容
    server 127.127.1.0
    fudge 127.127.1.0 startum 10
    [root@master-bad ~]# systemctl start ntpd
    [root@master-bad ~]# systemctl enable ntpd
    

    slave01-bad配置:

    • 安装ntp客户端
    [root@slave01-bad ~]# yum -y install ntpdate
    
    • 配置时间同步
    [root@slave01-bad ~]# ntpdate master-bad
    

    slave02-bad相同配置,配置时间同步

    配置免密登录

    • 只需要配置从主节点到从节点的即可

    • 生成ssh密钥

    [root@master-bad ~]# ssh-keygen
    
    • 将ssh密钥上传给master-bad
    [root@master-bad ~]# ssh-copy-id master-bad
    Are you sure you want to continue connecting (yes/no)? yes  //yes确认
    root@master-bad's password:  //输入master-bad的root密码
    

    同样操作将ssh密钥传给salve01-bad、slave02-bad

    将Hadoop、jdk环境包上传到服务器

    • 使用Xftp、SecureFX或其他远程工具将软件包上传至服务器
    • 直接在Internet上下载相关的包(wget

    Xftp上传Hadoop包

    这里直接使用Xftp上传至服务器

    • 查看已上传到软件包
    [root@master-bad ~]# ll /opt/Hadoop/
    总用量 8
    drwxr-xr-x. 9 root root 4096 6月   1 22:58 hadoop-2.7.6
    drwxr-xr-x. 8 root root 4096 6月   1 23:08 jdk1.8.0_171
    [root@master-bad ~]#
    

    如果是下载的是tar、gz的压缩包,需要先解压(tar -xf 压缩包名 解压的路径

    安装与配置jdk

    [root@master-bad ~]# vim /etc/profile  //配置环境变量
    export JAVA_HOME=/opt/Hadoop/jdk1.8.0_171
    export PATH=$PATH:$JAVA_HOME/bin
    [root@master-bad ~]# source /etc/profile  //重读文件,使配置的环境生效
    [root@master-bad ~]# java -version  //验证,查看Java环境的版本
    java version "1.7.0_51"
    OpenJDK Runtime Environment (rhel-2.4.5.5.el7-x86_64 u51-b31)
    OpenJDK 64-Bit Server VM (build 24.51-b03, mixed mode)
    [root@master-bad ~]# 
    

    安装Hadoop

    [root@master-bad ~]# vim /etc/profile  //配置环境变量
    export HADOOP_HOME=/opt/Hadoop/hadoop-2.7.6
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    [root@master-bad ~]# source /etc/profile  //重读配置文件,是环境变量生效
    [root@master-bad ~]# chmod -R 755 /opt/Hadoop/  //修改权限
    [root@master-bad ~]# hadoop version  //验证,查看Hadoop版本
    Hadoop 2.7.6
    。。。
    [root@master-bad ~]# 
    

    需要递归赋予权限,否则无法查看Hadoop的版本信息

    修改Hadoop配置文件

    • 修改core-site.xml配置文件
    [root@master-bad ~]# cd /opt/Hadoop/hadoop-2.7.6/etc/hadoop/
    [root@master-bad hadoop]# vim core-site.xml 
    <configuration>
    
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://master-bad:9000</value>
        </property>
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/opt/Hadoop/hadoop-2.7.6/hdfs</value>
        </property>
    
    </configuration>
    [root@master-bad hadoop]# 
    
    • 修改hdfs-site.xml配置文件
    [root@master-bad hadoop]# vim hdfs-site.xml 
    <configuration>
    
        <property>
            <name>dfs.replication</name>
            <value>3</value>
        </property>
        <property>
            <name>dfs.namenode.secondary.http-address</name>
            <value>slave02-bad:9001</value>
        </property>
    
    </configuration>
    [root@master-bad hadoop]# 
    
    • 修改mapred-site.xml配置文件
    [root@master-bad hadoop]# vim mapred-site.xml
    <configuration>
    
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
    
    </configuration>
    [root@master-bad hadoop]#
    
    • 修改yarn-site.xml配置文件
    [root@master-bad hadoop]# vim yarn-site.xml 
    <configuration>
    
    <!-- Site specific YARN configuration properties -->
    
        <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>master-bad</value>
        </property>
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
    
    </configuration>
    [root@master-bad hadoop]# 
    
    • 修改slaves配置文件
    [root@master-bad hadoop]# vim slaves
    master-bad
    slave01-bad
    slave02-bad
    [root@master-bad hadoop]# 
    
    • 修改hadoop-env.sh配置文件
    [root@master-bad hadoop]# vim hadoop-env.sh
    #export JAVA_HOME=${JAVA_HOME}
    export JAVA_HOME=/opt/Hadoop/jdk1.8.0_171
    

    为防止配置出错,方便恢复,配置文件修改前,将原文件复制一行,注释掉,再进行修改

    将修改好的环境复制到其他节点

    • 将JDK环境包复制到其他从节点
    [root@master-bad hadoop]# scp -r /opt/Hadoop/jdk1.8.0_171/ slave01-bad:/opt/Hadoop/
    [root@master-bad hadoop]# scp -r /opt/Hadoop/jdk1.8.0_171/ slave02-bad:/opt/Hadoop/
    
    • 将Hadoop软件包复制到其他从节点
    [root@master-bad hadoop]# scp -r /opt/Hadoop/hadoop-2.7.6/ slave01-bad:/opt/Hadoop/
    [root@master-bad hadoop]# scp -r /opt/Hadoop/hadoop-2.7.6/ slave02-bad:/opt/Hadoop/
    
    • 将环境复制到其他从节点
    [root@master-bad hadoop]# scp /etc/profile slave01-bad:/etc/
    [root@master-bad hadoop]# scp /etc/profile slave02-bad:/etc/
    

    格式化Hadoop

    [root@master-bad hadoop]# hdfs namenode -format
    [root@master-bad hadoop]# start-all.sh 
    

    格式化成功后,会看到successfully formatted

    验证启动情况

    • master-bad验证
    [root@master-bad hadoop]# jps
    46340 NodeManager
    46184 ResourceManager
    45914 DataNode
    48461 Jps
    45726 NameNode
    [root@master-bad hadoop]# 
    
    • slave01-bad验证
    [root@slave01-bad ~]# jps
    2881 DataNode
    2979 Jps
    2942 NodeManager
    [root@slave01-bad ~]#
    
    • slave02-bad验证
    [root@slave02-bad ~]# jps
    3796 NodeManager
    3653 DataNode
    3722 SecondaryNameNode
    4222 Jps
    [root@slave02-bad ~]# 
    

    注意事项

    • 主机名和hosts中的映射关系要一致,如果不一致,服务会起不来
    • 关闭防火墙,禁止开机自启,或防火墙放行(实验中可以禁止防火墙自启,方便实验可以直接关闭防火墙)
    • 客户端一定要配置时间同步
    • master上生成的ssh密钥三台主机都要上传
    • jdk和Hadoop的环境配置完成后,检查是否生效
    • Hadoop启动后,可以通过Web访问http://localhost:9870http://localhost:50070验证是否成功启动

    Web查看

    实验中遇到的问题及解决方法

    1. 无法格式化Hadoop

    使用hadoop namenode -format -force强制格式化

    1. master可以使用jps查看,slave无法查看
    • root@slave01-bad's password: slave01-bad: Permission denied, please try again

    将Hadoop的安装目录权限提高,chmod -R 777 /opt/Hadoop/

    • /opt/Hadoop/jdk1.8.0_171/bin/jps: 没有那个文件或目录

    没有将jdk环境包上传至slave,重新上传[root@master-bad hadoop]# scp -r /opt/Hadoop/jdk1.8.0_171/ slave02-bad:/opt/Hadoop/

    问题解决办法可参考-柚子皮-的博客。

    以上内容均属原创,如有不详或错误,敬请指出。
    
    本文作者: 坏坏
  • 相关阅读:
    AndroidのActivity启动模式
    Android 垃圾回收,用软引用建立缓存
    如何在eclipse的配置文件里指定jdk路径
    Chrome浏览器扩展开发系列之二:Google Chrome浏览器扩展的调试
    Chrome浏览器扩展开发系列之三:Google Chrome浏览器扩展的架构
    Chrome浏览器扩展开发系列之四:Browser Action类型的Chrome浏览器扩展
    Chrome浏览器扩展开发系列之五:Page Action类型的Chrome浏览器扩展
    Chrome浏览器扩展开发系列之六:options 页面
    手把手教你开发Chrome扩展三:关于本地存储数据
    手把手教你开发Chrome扩展二:为html添加行为
  • 原文地址:https://www.cnblogs.com/bad5/p/13232826.html
Copyright © 2011-2022 走看看