• Hadoop环境搭建-单机、伪分布式、完全分布式


    目录

    一、单机安装

     二、伪分布式环境搭建

    配置SSH免密登录

     三、完全分布式环境搭建

    设置免密

    修改配置文件


    本文的所有配置文件,除注释部分都可直接复制粘贴。因为本文的配置文件的语言语法采用的是HTML或JAVA,注释部分可能和linux系统上的不同,因此如果直接复制粘贴记得将注释删除或调整语法。 

    一、单机安装

    1、安装虚拟机、操作系统(前期初步准备工作已完成)先关闭firewalld防火墙:

    systemctl stop firewalld //停止防火墙
    systemctl disable firewalld //关闭防火墙开机自启动
    systemctl status firewalld //查看防火墙状态

    2、设置主机名:

    hostnamectl set-hostname master //设置主机名为master
    hostname //查看主机名

    3、映射主机名和IP地址:

    ip add //查看IP地址
    vi /etc/hosts //在文件最后一行加上IP地址和主机名
    例:192... master
    

    4、安装rz命令:

    yum install -y lrzsz

    5、利用rz将JDK上传至服务器:

    mkdir -p /export/server //新建一个专用目录
    cd /export/server //切换目录
    rz
    tar -zxvf /root/jdk.tar.gz //解压
    mv jdk1.8.0_131/ jdk1.8 //重命名

    6、配置JAVA环境

    vi /etc/profile
    //在文件最后加上
    JAVA_HOME=/export/server/jdk1.8
    export PATH=$PATH:$JAVA_HOME/bin
        
    //保存并退出后,刷新文件
    source /etc/profile
    //查看jdk是否安装成功,出现版本号即可
    java -version

    7、上传hadoop压缩包至服务器并解压:

    cd /export/server
    rz
    tar -zxvf /root/hadoop-2.7.2.tar.gz
    //配置hadoop环境变量
    cd hadoop-2.7.2
    pwd //显示hadoop安装路径,方便后续配置
    vi /etc/profile
    //在文件最后加上
    HADOOP_HOME=/export/server/hadoop-2.7.2
    PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    export JAVA_HOME HADOOP_HOME PATH
    ​
    //保存并退出后,刷新文件
    source /etc/profile
    //查看hadoop是否安装成功
    hadoop version
    

     二、伪分布式环境搭建

     搭建伪分布式前提条件:文章上面的基础hadoop、jdk环境搭建完成

    which java //查看java所在位置
    vi hadoop-env.sh
    //将export JAVA_HOME的值修改为我们安装的JDK路径
    export JAVA_HOME=/export/server/jdk1.8

    进入hadoop/etc/hadoop目录:

    cd /export/server/hadoop/etc/hadoop

    修改core-site.xml:

    vi core-site.xml

    如果配置了存放临时文件则需要创建一个目录:

    mkdir -p /export/server/hadoop-2.7.2/data/tmp

    1. <configuration>
    2. <property>
    3. <name>fs.defaultFSname>
    4. <value>hdfs://master:9000value>
    5. property>
    6. <property>
    7. <name>hadoop.tmp.dirname>
    8. <value>/export/server/hadoop-2.7.2/data/tmpvalue>
    9. property>
    10. configuration>

     修改hdfs-site.xml:

    vi hdfs-site.xml

    1. <configuration>
    2. <property>
    3. <name>dfs.replicationname>
    4. <value>1value>
    5. property>
    6. <property>
    7. <name>dfs.secondary.http.addressname>
    8. <value>master:50070value>
    9. property>
    10. configuration>

    修改mapred-site.xml:

    这个文件是不存在的,但是有一个模板文件mapred-site.xml.template,我们将这个文件改名为mapred-site.xml,然后进行修改:

    mv  mapred-site.xml.template mapred-site.xml

    vi mapred-site.xml

    1. <configuration>
    2. <property>
    3. <name>mapreduce.framework.namename>
    4. <value>yarnvalue>
    5. property>
    6. configuration>

    修改yarn-site.xml:

    vi yarn-site.xml

    该文件为Yarn框架配置文件,配置ResourceManager,nodeManager的通信端口,web监视端口等

    1. <configuration>
    2. <property>
    3. <name>yarn.resourcemanager.hostnamename>
    4. <value>mastervalue>
    5. property>
    6. <property>
    7. <name>yarn.nodemanager.aux-servicesname>
    8. <value>mapreduce_shufflevalue>
    9. property>
    10. configuration>

    格式化DFS:

    hdfs namenode -format

    如果在格式化的日志中出现succefully format就证明格式化成功

    启动所有服务:start-all.sh

    关闭所有服务:stop-all.sh

    配置SSH免密登录

    输入:

    ssh-keygen -t rsa

    按四次回车

    建立密钥对:

    cd /root/.ssh

    查看:ll

    私钥:id_rsa

    公钥:id_rsa.pub

    ssh-copy-id将本机的公钥复制到远程机器的authorized_keys文件中,这里是伪分布式,只有一台机器,所以仍然是master然后需要输入master的root用户密码:

    ssh-copy-id master

    可以查看:记录多台机器的公钥,让机器之间使用ssh不需要用户名和密码:

    #more authorized_keys

    可以看到authorized_keys中的内容就是id_rsa.pub的内容,再次使用start-dfs.sh和start-yarn.sh,发现不需要输入密码了,实现免密登录。

     三、完全分布式环境搭建

    1、先将可以联网的单机,克隆三台:master、slave1、slave2

    没有创建单机,直接搭建完全分布式的。可以创建三台虚拟机,然后配置好基础的hadoop、jdk环境,效果等于克隆三台单机。单机配置可看上文

    2、把每台的文件都修改一下:

    vi /etc/sysconfig/network-scripts/ifcfg-ens33

    按规划设置各节点IP,网段取决于自己的电脑。为方便记忆,建议master节点IP尾数用200,slave用201,slave用202

    //将UUID删除
    //修改IPADDR=网段
    例:
    master的IPADDR=192...200
    slave1的IPADDR=192...201
    

    3、重启网络服务:systemctl restart network

    4、为了方便,三台都重命名:hostnamectl set-hostname 名字

    例:master主节点重命名:hostnamectl set-hostname master

    如果是用远程连接工具修改,需要重新连接才会显示修改后的名字

    5、修改hosts文件,在主节点映射IP地址和主机名(每个节点都要)

    vi /etc/hosts
    //在文件最后加上:
    //主节点IP地址+ master 例:192...200 master
    //从一节点IP+ slave1
    //从二节点IP+ slave2

    6、将配置好的hosts文件发送给两个从节点:

    scp /etc/hosts slave1:/etc/hosts

    scp /etc/hosts slave2:/etc/hosts

    7、查看三台时间是否相同:date

    如果时间不同,手动时间同步:

    安装NTP服务:yum install ntp

    时间同步(三台都要):ntpdate -u ntp1.aliyun.com

    查看防火墙是否开启:systemctl status firewalld.service

    如果开启,则关闭:systemctl stop firewalld.service

    设置免密

    1、删除三台机上的.ssh目录:rm -rf /root/.ssh

    2、生成新密钥对(三台都要):ssh-keygen -t rsa

    连按三次回车

    3、切换目录,将三个节点的.ssh目录下的公钥复制到主节点(master)上(前提是你已经在主节点把/etc/hosts文件配置好并分发给了两台从节点,不然会报不知道master的错误):

    cd /root/.ssh

    ssh-copy-id master (三个都要)

    4、查看是否复制成功(要在/root/.ssh下):

    cat authorized_keys

    5、在主节点上远程拷贝到两个从节点:

    scp authorized_keys slave1:/root/.ssh/authorized_keys

    scp authorized_keys slave2:/root/.ssh/authorized_keys

    在执行过程中输入yes并输入密码

    验证:ssh slave1 可以切换

    第五点也可以直接将master的/root/.ssh拷贝到另外两台主机上

    scp -r /root/.ssh slave1:/root

    scp -r /root/.ssh slave2:/root

    修改配置文件

    先在主节点创建三个文件夹:

    mkdir -p /export/server/tmp(不配置文件可以不创)

    mkdir -p /export/server/hdfs/name(不配置文件可以不创)

    mkdir -p /export/server/hdfs/data(不配置文件可以不创)

    切换目录:cd /export/server/hadoop-2.7.2/etc/hadoop

    修改:vi core-site.xml

    1. <property>
    2. <name>fs.defaultFSname>
    3. <value>hdfs://master:9000value>
    4. property>
    5. <property>
    6. <name>hadoop.tmp.dirname>
    7. <value>/export/server/tmpvalue>
    8. property>

    先查看自己的java所在,方便后续配置:which java

    修改文件:vi hadoop-env.sh

    //大概25行
    //export JAVA_HOME=/export/server/jdk1.8 (写自己jdk的存放目录)

    修改:vi mapred-env.sh

    将java路径写上:

    //export JAVA_HOME=/export/server/jdk1.8
    

    修改:vi yarn-env.sh

    //将java路径写上
    //export JAVA_HOME=/export/server/jdk.18
    

    将文件改名:mv mapred-site.xml.template mapred-site.xml

    修改:vi mapred-site.xml

    1. <property>
    2. <name>mapreduce.framework.namename>
    3. <value>yarnvalue>
    4. property>

     修改:vi yarn-site.xml

    1. <property>
    2. <name>yarn.resourcemanager.hostnamename>
    3. <value>mastervalue>
    4. property>
    5. <property>
    6. <name>yarn.nodemanager.aux-servicesname>
    7. <value>mapreduce_shufflevalue>
    8. property>

     修改:vi hdfs-site.xml(默认配好,可以不配)

    1. <property>
    2. <name>dfs.namenode.name.dirname>
    3. <value>file:/export/server/hdfs/namevalue>
    4. property>
    5. <property>
    6. <name>dfs.datanode.data.dirname>
    7. <value>file:/export/server/hdfs/datavalue>
    8. property>
    9. <property>
    10. <name>dfs.replicationname>
    11. <value>2value>
    12. property>

    vi slaves

    将两个从节点的名字写到最后:

    slave1

    slave2

    将文件发送给两个从节点:

    scp -r /export/server/hadoop-2.7.2/etc/hadoop slave1:/export/server/hadoop-2.7.2/etc

    scp -r /export/server/hadoop-2.7.2/etc/hadoop slave2:/export/server/hadoop-2.7.2/etc

    格式化文件:

    hdfs namenode -format

    启动集群,主节点有4个,从节点有3个:

    start-all.sh

     

     

  • 相关阅读:
    DolphinScheduler 进阶(资源中心)
    【算法3.5】Dijkstra求最短路(完结)
    联盟认证 | 聚铭网络正式成为中国反网络病毒联盟成员
    3.4、可靠传输
    数据结构树与二叉树的实现
    MongoDB 简介和安装
    编程技巧│浏览器 Notification 桌面推送通知
    【vuex】
    【C++面向对象】8. 继承
    GNN 101
  • 原文地址:https://blog.csdn.net/qq_62731133/article/details/127963207