• 大数据平台搭建-hadoop集群的搭建


    本系列文章主要阐述大数据计算平台相关框架的搭建,包括如下内容:

    本文主要讲解hadoophbase的分布式搭建过程。

    版本要求

    • java版本:1.8.0_181
    • zookeeper版本:zookeeper-3.4.10
    • hadoop版本:hadoop-2.7.6
    • hbase版本:hbase-1.2.6.1

    前置条件

    免密登录

    见链接免密登录

    java安装

    见链接java安装

    zookeeper安装

    见链接zookeeper安装

    服务器资源和分配

    本文服务器列表如下:

    192.168.220.200  bigdata1
    192.168.220.201  bigdata2
    192.168.220.202  bigdata3
    192.168.220.203  bigdata4
    192.168.220.204  bigdata5
    

    其中选用bigdata1bigdata2作为namenode,bigdata3、bigdat4、bigdata5作为dataNode,安装完成后各节点进程名如下:

    主机名 ip地址 NameNode ResourceManager DFSZKFailoverController DataNode JournalNode NodeManager
    bigdata1 192.168.220.200 Y Y Y N N N
    bigdata2 192.168.220.201 Y Y Y N N N
    bigdata3 192.168.220.202 N N N Y Y Y
    bigdata4 192.168.220.203 N N N Y Y Y
    bigdata5 192.168.220.204 N N N Y Y Y

    下载解压安装

    • 下载
      从官网hadoop下载选择对应的版本,本文选择版本hadoop-2.7.6.tar.gz

    • 切换至主目录

        cd ~   
      
    • 解压

        tar -zxvf hadoop-2.7.6.tar.gz       
      
    • 重名名

        mv  hadoop-2.7.6  hadoop  
      

    配置环境变量

    编辑

    vi ~/.bash_profile   
    

    配置完成后,结果如下:
    # .bash_profile

    # Get the aliases and functions
    if [ -f ~/.bashrc ]; then
            . ~/.bashrc
    fi
    
    # User specific environment and startup programs
    export JAVA_HOME=/home/oracle/jdk
    export SCALA_HOME=/home/oracle/scala
    export KAFKA_HOME=/home/oracle/kafka
    export SPARK_HOME=/home/oracle/spark
    export HADOOP_HOME=/home/oracle/hadoop
    export HADOOP_PID_DIR=/home/oracle/hadoop/pids
    export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native 
    export HADOOP_OPTS="$HADOOP_OPTS-Djava.library.path=$HADOOP_HOME/lib/native" 
    export HADOOP_PREFIX=$HADOOP_HOME 
    export HADOOP_MAPRED_HOME=$HADOOP_HOME 
    export HADOOP_COMMON_HOME=$HADOOP_HOME 
    export HADOOP_HDFS_HOME=$HADOOP_HOME 
    export YARN_HOME=$HADOOP_HOME 
    export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop 
    export HDFS_CONF_DIR=$HADOOP_HOME/etc/hadoop 
    export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop 
    export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native 
    export FLINK_HOME=/home/oracle/flink
    export PATH=$JAVA_HOME/bin:$SCALA_HOME/bin:$KAFKA_HOME/bin:$SPARK_HOME/bin:$HADOOP_HOME/bin:$FLINK_HOME/bin:/sbin:$PATH
    export PATH JAVA_HOME SCALA_HOME  KAFKA_HOME SPARK_HOME  HADOOP_HOME  FLINK_HOME
    

    hadoop配置更改

    hadoop相关的配置都在$HADOOP_HOME/etc/hadoop目录下,本文中

    $HADOOP_HOME=/home/oracle/hadoop
    

    hadoop集群搭建主要涉及如下配置文件的变更

    hadoop-env.sh

    路径:/home/oracle/hadoop/etc/hadoop/hadoop-env.sh
    hadoop-env.sh文件只需要改动JAVA_HOME为具体的路径即可

    #export JAVA_HOME=${JAVA_HOME}
    export JAVA_HOME=/home/oracle/jdk
    

    core-site.xml

    路径:/home/oracle/hadoop/etc/hadoop/core-site.xml
    fs.defaultFS:用于指定NameNode URI
    ha.zookeeper.quorum:用于指定zookeeper的地址

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
       <property>
            <name>fs.defaultFS</name>
            <value>hdfs://cluster</value>
        </property>
            <property>
            <name>hadoop.tmp.dir</name>
            <value>/home/oracle/bigdata/hadoop/tmp</value>
        </property>
    
        <property>
            <name>ha.zookeeper.quorum</name>
            <value>192.168.220.200:2181,192.168.220.200:2181,192.168.220.200:2181</value>
        </property>
        <property>
            <name>ha.zookeeper.session-timeout.ms</name>
            <value>60000</value>
         </property>
    </configuration>
    

    hdfs-site.xml

    路径:/home/oracle/hadoop/etc/hadoop/core-site.xml
    dfs.nameservices:需要和core-site.xml中的fs.defaultFS保持一致
    dfs.ha.namenodes.cluster:用于指定namenodes,逗号分隔,别名可以随便命名,本文中为nn1nn2,需要注意的是下面的rpchttp地址需要和别名保持一致。

    dfs.namenode.rpc-address.cluster.nn1
    dfs.namenode.http-address.cluster.nn1
    

    dfs.namenode.shared.edits.dir: 指定NameNode的元数据在JournalNode上的存放位置
    dfs.journalnode.edits.dir:指定JournalNode在本地磁盘存放数据的位置
    dfs.namenode.name.dir:指定namenode名称空间的存储地址
    dfs.datanode.data.dir:指定namenode名称空间的存储地址

    hdfs-site.xml完整配置如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
        <property>
            <name>dfs.nameservices</name>
            <value>cluster</value>
        </property>
        <property>
            <name>dfs.ha.namenodes.cluster</name>
            <value>nn1,nn2</value>
        </property>
        <property>
            <name>dfs.namenode.rpc-address.cluster.nn1</name>
            <value>bigdata1:9000</value>
        </property> 
        <property>
            <name>dfs.namenode.http-address.cluster.nn1</name>
            <value>bigdata1:50070</value>
        </property> 
    
        <property>
            <name>dfs.namenode.rpc-address.cluster.nn2</name>
            <value>bigdata2:9000</value>
        </property> 
        <property>
            <name>dfs.namenode.http-address.cluster.nn2</name>
            <value>bigdata2:50070</value>
        </property> 
        <property>
            <name>dfs.namenode.shared.edits.dir</name>
            <value>qjournal://bigdata3:8485;bigdata4:8485;bigdata5:8485/cluster</value>
        </property> 
        <property>
            <name>dfs.journalnode.edits.dir</name>
            <value>/home/oracle/bigdata/hadoop/journal</value>
        </property> 
        <property>
            <name>dfs.ha.automatic-failover.enabled</name>
            <value>true</value>
        </property>     
        <property>
            <name>dfs.client.failover.proxy.provider.cluster</name>
            <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
        </property>         
        <property>
            <name>dfs.ha.fencing.methods</name>
            <value>sshfence</value>
        </property> 
            <property>
            <name>dfs.ha.fencing.ssh.private-key-files</name>
            <value>/home/oracle/.ssh/id_rsa</value>
        </property>
        <property>
            <name>dfs.ha.fencing.ssh.connect-timeout</name>
            <value>30000</value>
        </property>
        <property>
            <name>dfs.namenode.name.dir</name>
            <value>file:///home/oracle/bigdata/hadoop/hdfs/name</value>
        </property>
        <property>
            <name>dfs.datanode.data.dir</name>
            <value>file:///home/oracle/bigdata/hadoop/hdfs/data</value>
        </property> 
    </configuration>
    

    slaves

    路径:/home/oracle/hadoop/etc/hadoop/slaves
    slavas配置文件如下:

    bigdata3
    bigdata4
    bigdata5
    

    mapred-site.xml

    路径:/home/oracle/hadoop/etc/hadoop/mapred-site.xml
    主要是指定资源调度框架为yarn

    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
    	<property>
    		<name>mapreduce.framework.name</name>
    		<value>yarn</value>
    	</property>
    </configuration>
    

    yarn-site.xml

    路径:/home/oracle/hadoop/etc/hadoop/yarn-site.xml
    主要是设定yarn.resourcemanager的主机名。

    <?xml version="1.0"?>
    <configuration>
        <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>bigdata1</value>
        </property>
            <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
    </configuration>
    

    创建文件目录

    bigdata1节点上的配置更改完成后,同步到其他节点。

    scp -r /home/oracle/hadoop  oracle@bigdata2:/home/oracle
    scp -r /home/oracle/hadoop  oracle@bigdata3:/home/oracle
    scp -r /home/oracle/hadoop  oracle@bigdata4:/home/oracle
    scp -r /home/oracle/hadoop  oracle@bigdata5:/home/oracle
    

    同步完成后,在所有节点(bigdata1-bigdata5)上创建文件目录,主要是配置上对应的文件夹。

    mkdir -p /home/oracle/bigdata/hadoop/tmp
    mkdir -p /home/oracle/bigdata/hadoop/journal
    mkdir -p /home/oracle/bigdata/hadoop/hdfs/name
    mkdir -p /home/oracle/bigdata/hadoop/hdfs/data
    

    初始化和启动

    由于namenode采用了ha,初始化和单namenode的启动有点不一样,具体过程如下。

    启动journalnode

    bigdata1上执行,启动journalnode

    /home/oracle/hadoop/sbin/hadoop-daemons.sh start journalnode
    

    正常情况下,bigdata3、bigdata4、bigdata5会存在JournalNode的进程。

    格式化zookeeper

    bigdata1上执行格式化zookeeper

    /home/oracle/hadoop/bin/hdfs zkfc -formatZK
    

    正常情况下,zookeeper根目录下会创建hadoop相关的目录。

    格式化hadoop

    bigdata1上执行格式化hadoop namenode的命令

    /home/oracle/hadoop/bin/hadoop namenode -format
    

    主要是在服务器上初始化文件夹目录。

    启动namenode

    bigdata1上启动namenode

    /home/oracle/hadoop/sbin/hadoop-daemon.sh start namenode
    

    正常情况下bigdata1存在NameNode的进程

    同步

    bigdata2上同步namenode的相关信息并启动

    /home/oracle/hadoop/bin/hdfs namenode -bootstrapStandby
    /home/oracle/hadoop/sbin/hadoop-daemon.sh start namenode
    

    正常情况下bigdata2也存在NameNode的进程

    启动datanode和yarn

    namenode启动完成后,其他进程的启动可以在bigdata1上分步执行

    /home/oracle/hadoop/sbin/hadoop-daemons.sh start datanode
    /home/oracle/hadoop/sbin/hadoop-daemons.sh start zkfc
    /home/oracle/hadoop/sbin/start-yarn.sh
    

    同时也可以直接执行,让hadoop脚本自动验证和启动相关进程。

    /home/oracle/hadoop/sbin/start-dfs.sh
    /home/oracle/hadoop/sbin/start-yarn.sh
    

    验证

    界面查看

    hadoop
    http://bigdata1:50070
    
    yarn 
    http://bigdata1:8088/cluster
    

    hdfs文件系统

    hdfs dfs -ls hdfs://
    

    mapreduce测试

    hadoop jar /home/oracle/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.6.jar pi 2 5
    

    关于作者
    爱编程、爱钻研、爱分享、爱生活
    关注分布式、高并发、数据挖掘

  • 相关阅读:
    linux系统中如何进入退出vim编辑器,方法及区别
    [转]JAVA的动态代理机制及Spring的实现方式
    mybaties 缓存
    全面分析 Spring 的编程式事务管理及声明式事务管理
    面试(4)-spring-Spring面试题和答案
    vector的多套遍历方案
    【QT】QT下载与安装
    【QT】无需写connect代码关联信号和槽函数
    【QT】第一个QT程序(点击按钮,显示特定文本)
    【QT】error: 'SIGNAL' was not declared in this scope
  • 原文地址:https://www.cnblogs.com/aidodoo/p/7484627.html
Copyright © 2020-2023  润新知