大数据平台搭建-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

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

原文地址:https://www.cnblogs.com/aidodoo/p/7484627.html