本系列文章主要阐述大数据计算平台相关框架的搭建,包括如下内容:
- 虚拟服务器安装
- 基础环境安装
- zookeeper集群的搭建
- kafka集群的搭建
- hadoop/hbase集群的搭建
- spark集群的搭建
- flink集群的搭建
- elasticsearch集群的搭建
- alluxio集群的搭建
本文主要讲解hadoop
和hbase
的分布式搭建过程。
版本要求
- 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
其中选用bigdata1
和bigdata2
作为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
,逗号分隔,别名可以随便命名,本文中为nn1
和nn2
,需要注意的是下面的rpc
和http
地址需要和别名保持一致。
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
关于作者
爱编程、爱钻研、爱分享、爱生活
关注分布式、高并发、数据挖掘