• Hadoop完全分布式模式安装部署


    在Linux上搭建Hadoop系列:1.Hadoop环境搭建流程图2.搭建Hadoop单机模式3.搭建Hadoop伪分布式模式4.搭建Hadoop完全分布式模式

    注:此教程皆是以范例讲述的,当然你可以按照教程搭建一个与教程一样的Hadoop环境,如果你想搭建一个与本教程有一些差异的Hadoop环境,这时请注意配置文件的参数可能不一样以及文件路径不一样。

    目录

    1.Hadoop集群规划与部署

    (1)准备3台虚拟机

    (2)分别映射好三台虚拟机的IP与主机名

    (3)设置三台机器时钟同步

    (4)设置三台机器两两之间SSH密码登录

    (5)修改主节点配置文件并远程拷贝到从节点

    1.在主节点上修改配置文件

    2.将主节点的配置文件分发到两个从节点

    2.格式化HDFS并启动Hadoop

    (1)在主节点上格式化HDFS

    (2)在主节点上启动Hadoop

    (3)在各节点上用JPS查看进程

    (4)web界面上查看

    3.在完全分布式模式下运行Hadoop自带示例程序

    1.在完全分布式模式下使用wordcount示例程序完成单词统计

    (1)准备数据

    (2)运行wordcount程序

    (3)查看运行结果

    2.在完全分布式模式下使用wordmean示例程序计算文件中单词的平均长度

    (1)准备数据:HDFS上的/input

      (2)运行wordmean程序

    (3)查看结果

     


    1.Hadoop集群规划与部署

    一个完全分布式模式Hadoop集群至少由三台机器构成,此处搭建一个三台机器构成的小集群。

    一主二从结构
    节点角色虚拟机名机器IP主机名运行进程
    主节点master192.168.232.200node

    NameNode

    ResourceManager

    SecondaryNameNode

    从节点slave1192.168.232.201node1

    DataNode

    NodeManager

    从节点slave2192.168.232.202node2

    DataNode

    NodeManager

    (1)准备3台虚拟机

    3台虚拟机可以是已部署单机模式Hadoop,已部署伪分布模式Hadoop,当然也可以是从零开始的基础环境。

               克隆出三台虚拟机

    注:为方便管理可以建一个文件夹(full-Distributed),将三台虚拟机放入其中。

    (2)分别映射好三台虚拟机的IP与主机名

    //1.修改IP避免冲突
    vi /etc/sysconfig/network-scripts/ifcfg-ens33  //编辑网络配置
    systemctl restart network //重启网络服务

    此处为方便记忆,建议master节点IP尾数用200,slave1用201,slave2用202.

    //2.修改主机名
    hostname //查看主机名
    hostnamectl set-hostname node //将主机名改为node
    hostnamectl set-hostname node1 //将主机名改为node1
    hostnamectl set-hostname node2 //将主机名改为node2

    master用node,slave1用node1,slave2用node2.

    //3.映射IP与主机名
    vi /etc/hosts

    (3)设置三台机器时钟同步

    完全分布式模式由多台主机组成,如果主机间时间差异较大,运行Hadoop的时候会出现问题,因此需要对每个节点配置时钟同步。

    采用NTP服务通过获取网络时间使集群内不同主机的时间保持一致

    此处选取阿里云的时间服务器aliyun.com

    //1.安装NTP服务
    yum install ntp
    //2.手动同步时间
    ntpdate -u ntp1.aliyun.com
    //3.查看时间
    date

    (4)设置三台机器两两之间SSH密码登录

    在完全分布式模式下,集群内任意一台主机可免密登录集群内所有主机,实现两两免密登录。

    若是以伪分布模式为基础的机器则需要先删除node,node1,node2主机上原有的.ssh目录

    然后分别在node,node1,node2主机上生成公钥/私钥密钥对,再将公钥发送给集群内的所有主机。

    //1.在各节点上删除原有.ssh目录,然后重新生成密钥对
    rm -rf /root/.ssh //删除原有.ssh目录
    ssh-keygen -t rsa  //生成密钥对
    cd ~/.ssh  //进入.ssh目录
    ll  //查看密钥对
    //2.在各节点的.ssh目录下将公钥复制到node节点
    cd ~  //进入根目录
    ssh-copy-id node  //复制公钥到node节点
    ssh-copy-id node1  //复制公钥到node1节点
    ssh-copy-id node2  //复制公钥到node2节点
    
    //3.查看node节点上的authorized_key文件
    cd .ssh  //进入.ssh目录
    more authorized_keys
    //4.将node节点上的authorized_keys文件远程拷贝到node1,node2
    scp authorized_keys node1:~/.ssh/authorized_keys //执行过程中输入yes与密码
    scp authorized_keys node2:~/.ssh/authorized_keys //执行过程中输入yes与密码
    //5.验证免密登录,注意查看提示符中主机名称的变化
    ssh node2 //免密登录node2节点
    exit //退出远程登录
    ssh node1 //免密登录node1节点
    exit //退出远程登录

    (5)修改主节点配置文件并远程拷贝到从节点

    概要:

    1.在主节点上修改配置文件(以下皆以伪分布式Hadoop为基础的虚拟机作为示范)
    核心配置文件
    core-site.xml  修改
    
    HDFS配置文件
    hadoop-env.sh  不变
    hdfs-site.xml  修改
    
    MapReduce配置文件
    mapred-env.sh  修改
    mapred-site.xml 不变
    
    Yarn配置文件
    yarn-env.sh 修改
    yarn-site.xml 修改
    
    slaves 修改

    1.在主节点上修改配置文件

    核心配置文件

    core-site.xml  修改

    cd /export/server/hadoop-2.7.2/etc/hadoop
    vi core-site.xml
    //在<configuration></configuration>中插入<property></property>中的代码。注意主机名与文件路径是否是自己的
    
    <configuration> 
    <property>
            <name>fs.defaultFS</name>
            <value>hdfs://node:9000</value>
           <description>HDFS的URI,设定namenode的主机名及端口</description>
    </property>
    
    
    <property>
            <name>hadoop.tmp.dir</name>
            <value>/export/server/tmp</value>
           <description>节点上本地的hadoop临时文件夹,之前一定要先建立好</description>
    </property>
    </configuration>

    HDFS配置文件

    hadoop-env.sh  不变  //在伪分布式已修改过

    hdfs-site.xml  修改

    vi hdfs-site.xml
    //在<configuration></configuration>中插入<property></property>中的代码。注意主机名与文件路径是否是自己的
    <configuration>
    <property>
            <name>dfs.namenode.name.dir</name>
            <value>file:/export/server/hdfs/name</value>
           <description>namenode上存储hdfs名字空间元数据 </description>
    </property>
    
    <property>
            <name>dfs.datanode.data.dir</name>
            <value>file:/export/server/hdfs/data</value>
            <description>datanode上数据块的物理存储位置</description>
    </property>
    
    <property>
            <name>dfs.replication</name>
            <value>2</value>
            <description>副本个数,默认是3,应小于datanode机器数量</description>
    </property>
    
    </configuration>

    MapReduce配置文件

    mapred-env.sh  修改

    mapred-site.xml 不变

    which java //查看java安装路径
    vi mapred-env.sh
    插入export JAVA_HOME=/bin以前的java安装路径

    Yarn配置文件

    yarn-env.sh  修改

    yarn-site.xml  修改

    which java //获取java安装路径
    vi yarn-env.sh
    插入export JAVA_HOME=/bin以前的java安装路径
    vi yarn-site.xml
    //在<configuration></configuration>中插入<property></property>中的代码。注意主机名是否是自己的
    <configuration>
    <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>node</value>
            <description>指定resourcemanager所在的hostname,
                                   即指定yarn的老大即ResourceManger的地址
           </description>
    </property>
    
    <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
           <description>NodeManager上运行的附属服务。
                                 指定NodeManager获取数据的方式是shuffle
                                 需配置成mapreduce_shuffle,才可运行MapReduce程序
           </description>
    </property>
    </configuration>

    slaves 修改

    slaves文件给出了Hadoop集群的slave节点列表。启动Hadoop时,系统总是根据当前slaves文件中slave节点名称列表启动集群,不在列表中的Slave节点便不会被视为计算节点。

    vi slaves
    插入各节点名

    2.将主节点的配置文件分发到两个从节点

    分发到node1从节点
    scp -r /export/server/hadoop-2.7.2/etc/hadoop node1:/export/server/hadoop-2.7.2/etc/
    分发到node2从节点
    scp -r /export/server/hadoop-2.7.2/etc/hadoop node2:/export/server/hadoop-2.7.2/etc/

    2.格式化HDFS并启动Hadoop

    (1)在主节点上格式化HDFS

    hdfs namenode -format

    (2)在主节点上启动Hadoop

    start-all.sh //启动所有进程
    //或
    start-dfs.sh
    start-yarn.sh

    (3)在各节点上用JPS查看进程

    (4)web界面上查看

    在浏览器输入主机的IP地址:50070

    3.在完全分布式模式下运行Hadoop自带示例程序

    1.在完全分布式模式下使用wordcount示例程序完成单词统计

    (1)准备数据

    (2)运行wordcount程序

    cd /export/server/hadoop-2.7.2/share/hadoop/mapreduce/
    hadoop jar hadoop-mapreduce-examples-2.7.2.jar wordcount/input/wcoutput

    (3)查看运行结果

    hadoop fs -ls /wcoutput
    hadoop fs -cat wcoutput/part*

    2.在完全分布式模式下使用wordmean示例程序计算文件中单词的平均长度

    (1)准备数据:HDFS上的/input

      (2)运行wordmean程序

    hadoop jar hadoop-mapreduce-examples-2.7.2.jar wordmean/input/wmoutput
    

    (3)查看结果

    hadoop fs -ls /wmoutput
    hadoop fs -cat /wmouput/part*
    搭建完全分布式模式Hadoop
    准备3台虚拟机克隆
    在3台机器上分别设置IP和主机名并映射关系

    vi /etc/sysconfig/network-scripts/ifcfg-ens33  //更改IP

    hostnamectl set-hostname node  //更改主机名

    vi /etc/hosts  //映射关系

    设置3台机器时钟同步

    yum install ntp //安装ntp服务

    ntpdate -u ntp1.aliyun.com //手动同步时间

    配置3台机器两两之间SSH免密登录

    ssh-keygen -t rsa  //获取密钥

    ssh-copy-id node  //复制公钥到node节点

    修改主节点配置文件并远程拷贝到从节点

    vi 各配置文件

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

    node1:/export/server/hadoop-2.7.2/etc/

    格式化HDFS并启动Hadoop

    hdfs namenode -format  //格式化HDFS

    start-all.sh //启动Hadoop所有进程

    jps //查看进程

    完全分布式模式运行Hadoop自带示例程序hadoop jar hadoop-mapreduce-examples-2.7.2.jar wordcount/input/wcoutput
  • 相关阅读:
    C++ VC实现对话框窗口任意分割
    C++ 关于滚动条的滚动问题
    C++ 自定义控件的移植(将在其它程序中设计的自定义控件,移植到现在的系统中)
    C++ 动态创建按钮及 按钮的消息响应
    C++ Custom Control控件 向父窗体发送对应的消息
    C++ MFC 改变控件大小和位置
    C++ 使用VS2010创建MFC ActiveX工程项目
    VC++ 自定义控件的建立及使用方法
    C++ CTreeview的checkbox使用方法
    C++ vc中怎么使用SendMessage自定义消息函数
  • 原文地址:https://www.cnblogs.com/zhushen/p/14039562.html
Copyright © 2020-2023  润新知