本文章主要介绍的是搭建hadoop开源集群组件
1、Hadoop生态圈简介
我们通常说到的hadoop包括两部分,一是Hadoop核心技术(或者说狭义上的hadoop),对应为apache开源社区的一个项目,主要包括三部分内容:hdfs,mapreduce,yarn。其中hdfs用来存储海量数据,mapreduce用来对海量数据进行计算,yarn是一个通用的资源调度框架(是在hadoop2.0中产生的)。
另一部分指广义的,广义上指一个生态圈,泛指大数据技术相关的开源组件或产品,如hbase、hive、spark、pig、zookeeper、kafka、flume、phoenix、sqoop等。
生态圈中的这些组件或产品相互之间会有依赖,但又各自独立。比如habse和kafka会依赖zookeeper,hive会依赖mapreduce。
需要说明的是,上图并没有包括当前生态圈中的所有组件。而且hadoop生态圈技术在不断的发展,会不断有新的组件出现,一些老的组件也可能被新的组件替代。需要持续关注Hadoop开源社区的技术发展才能跟得上变化。
若有任何疑问,请访问HADOOP官网(http://hadoop.apache.org/)
2、基础环境准备
2.1、软件环境
本文将介绍 Redhat7.3开源搭建Hadoop集群,软件版本如下:
NO. | 软件名称 | 版本号 |
1. | 操作系统 | Redhat7.3 64位 |
2. | JDK | 8u131-linux-x64 |
3. | Hadoop | 2.7.7 |
4. | Zookeeper | 3.4.10 |
5. | Kafka | kafka_2.11-2.1.0 |
6. | Hbase | 1.3.1 |
2.2、配置规划
本次安装共 3 台服务器,服务器配置及用途如下:
NO. | 机器名称 | IP | 配置 |
1. | dlcj02 | 192.168.1.142 | 48核/32G/5.5T |
2. | dlcj03 | 192.168.1.143 | 48核/32G/5.5T |
3. | dlcj04 | 192.168.1.144 | 48核/32G/5.5T |
2.3 软件存放目录(所有节点)
为方便管理软件的安装及减少占用根目录下空间,在此对软件进行统一存放:
142/143/144节点都存放在相同的目录下:
以142节点为例,在目录(视个人情况而定)建立如下文件夹:
hadoop:存放hadoop安装文件
hbase:存放hbase安装文件
java:存放jdk1.8安装文件
kafka:存放kafka安装文件
zookeeper:存放zookeeper安装文件
2.4、设置映射关系(所有节点)
Redhat7修改指令为:vim /etc/hosts.此处将所有节点都加入进去。此处界面如下所示:
192.168.1.144 dlcj04
192.168.1.143 dlcj03
192.168.1..142 dlcj02
2.5、设置防火墙(所有节点)
关闭防火墙
即时生效,重启后会复原:systemctl stop firewalld
永久生效:systemctl disable firewalld
2.6、配置免密码登录 SSH(所有节点)
a.在root用户下输入ssh-keygen -t rsa 一路回车
b.秘钥生成后在~/.ssh/目录下,有两个文件id_rsa(私钥)和id_rsa.pub(公钥),将公钥复制到authorized_keys并赋予authorized_keys600权限(若没有该文件可以直接创建)。
c. 同理在dlcj03和dlcj04节点上生成秘钥,然后将秘钥复制到master节点上的authoized_keys。这个在复制时,直接使用cat命令将秘钥打印出来,然后直接将其复制到master节点上的authoized_keys即可。
d. 将dlcj02节点上的authoized_keys远程传输到dlcj03和dlcj04的~/.ssh/目录下。
e.检查是否免密登录(第一次登录会有提示)。
2.7、关闭 SELINUX(所有节点)
关闭selinux:
# setenforce 0 (临时生效)
# vim /etc/selinux/config (永久生效)
: SELINUX=disabled
2.8、安装 oracle JDK1.8 (所有节点)
将jdk-8u131-linux-x64.tar.gz包拷贝到linux系统中,并将其解压到指定目录下。然后在/etc/profile目录下添加(在proifile内容最后添加即可):
export JAVA_HOME= /usr/lcoal/java/jdk1.8
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar.
最后,执行命令source /etc/profile使配置文件生效,并查看java版本信息。
3、安装Hadoop
3.1 解压Hadoop到指定目录(142)
tar –zxvf hadoop-2.7.7.tar.gz –C /ies/hadoop
3.2 创建HDFS存储目录(142 143 144)
进入解压后的文件夹: cd /ies_data
mkdir hdfs
cd hdfs
mkdir name data tmp
./hdfs/name --存储namenode文件
./hdfs/data --存储数据
./hdfs/tmp --存储临时文件
3.3 配置环境变量(142)
vi /etc/profile
在末尾添加:
export HADOOP_HOME= /ies/hadoop/hadoop-2.7.7
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
保存后使新编辑的profile生效:
source /etc/profile
3.4 修改hadoop配置文件(142)
需要配置的文件的位置为/ieslab/hadoop/hadoop-2.7.7/etc/hadoop,需要修改的有以下几个文件:
hadoop-env.sh
yarn-env.sh
core-site.xml
hdfs-site.xml
mapred-site.xml
yarn-site.xml
slaves
其中hadoop-env.sh和yarn-env.sh里面都要添加jdk的环境变量
- hadoop-env.sh
添加如下代码:export JAVA_HOME= /ies/java/jdk1.8 到如下位置:
b. yarn-env.sh中
添加如下代码:export JAVA_HOME= /ies/java/jdk1.8 到如下位置:
c. core-site.xml中
添加如下代码:
<configuration>
<property>
<name>fs.defaultFS</name> ------文件系统用hdfs
<value>hdfs://dlcj02:9000</value> --namenode地址
</property>
<property>
<name>hadoop.tmp.dir</name> ------临时文件的存放目录
<value>file:/ies_data/hdfs/tmp</value>
</property>
</configuration>
d. hdfs-site.xml
添加如下代码:
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>dlcj02:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name> ----存储namenode的路径
<value>file:/ies_data/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name> ---存储上传数据的路径
<value>file:/ies_data/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value> ----副本数
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value> --设置为false可以不用检查权限
</property>
<property>
<name>dfs.web.ugi</name>
<value>supergroup</value>
</property>
</configuration>
e. mapred-site.xml
(注意要将mapred-site.xml.template重命名为 .xml的文件 Mv mapred-site.xml.template mapred-site.xml)
添加如下代码:
<configuration>
<property>
<!—默认为本地单机运行而不是集群模式运行,此处配置为yarn平台运行,yarn负责分配内存!-->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>dlcj02:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>dlcj02:19888</value>
</property>
</configuration>
f. yarn-site.xml
添加如下代码:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>dlcj02:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>dlcj02:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>dlcj02:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>dlcj02:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>dlcj02:8088</value>
</property>
</configuration>
g. slaves
将里面的localhost删掉,写入从节点主机名
dlcj03
dlcj04
3.5 拷贝hadoop文件至其他节点
scp -r /ieslab/hadoop root@dlcj03:/ieslab (143节点)
scp -r /ieslab/hadoop root@dlcj04:/ieslab (144节点)
3.6 拷贝profile文件至其他节点
scp /etc/profile root@dlcj03:/etc (143节点)
scp /etc/profile root@dlcj04:/etc (144节点)
在两个子节点上分别使新的profile生效:
source /etc/profile
3.7 格式化主节点的namenode (只在142执行)
进入hadoop目录(/ieslab/hadoop/hadoop-2.7.7)
然后执行:
./bin/hadoop namenode -format
新版本用下面的语句不用hadoop命令了
./bin/hdfs namenode -format
提示:successfully formatted表示格式化成功
3.8 启动hadoop
进入hadoop目录(/ieslab/hadoop/hadoop-2.7.7)执行
./sbin/start-all.sh
主节点(142)上jps进程如下:
NameNode
SecondaryNameNode
ResourceManager
每个子节点(143/144)上的jps进程如下:
DataNode
NodeManager
如果这样表示hadoop集群配置成功
4、安装Zookeeper和Kafka
该部分的安装,请详细参考另一博客《Kafka集群搭建》,此处不在赘述.
5、安装Hbase
5.1、准备工作
首先要有一个zookeeper和hadoop集群的环境,并启动zookeeper和hadoop.
(查看进程,已经启动zookeeper和hadoop hdfs相关进程)
5.2、上传hbase安装包并解压
tar -zvxf hbase-1.3.1-bin.tar -C /ieslab/hbase
5.3、修改Hbase配置文件
a. 把hadoop的hdfs-site.xml和core-site.xml 复制到hbase/conf下
cp /ieslab/hadoop/hadoop-2.7.7/etc/hadoop/hdfs-site.xml /ies/hbase/hbase-1.3.1/conf
cp /ieslab/hadoop/hadoop-2.7.7/etc/hadoop/core-site.xml /ies/hbase/hbase-1.3.1/conf
b. 修改hbase-env.sh
export JAVA_HOME= /ies/java/jdk1.8
//告诉hbase使用外部的zk
export HBASE_MANAGES_ZK=false
c. 修改 hbase-site.xml
添加以下代码:
<configuration>
<!-- 指定hbase在HDFS上存储的路径 -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://dlcj02:9000/hbase</value>
</property>
<!-- 指定hbase是分布式的 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- 指定zk的地址,多个用“,”分割 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>dlcj02:2181,dlcj03:2181,dlcj04:2181</value>
</property>
</configuration>
d. 修改 regionservers文件
添加一下内容:
dlcj02
dlcj03
dlcj04
e. 修改 backup-masters来指定备用的主节点(若该文件没有可自行创建即可)
添加一下内容:
dlcj03
f. 配置hbase环境变量
vim /etc/profile
添加以下代码:
export HBASE_HOME=/ies/hbase/hbase-1.3.1
export PATH=$HBASE_HOME/bin:$PATH
source /etc/profile使其立即生效
5.4、拷贝Hbase文件至其他节点
scp -r /ieshbase root@dlcj03:/ies (143节点)
scp -r /ies/hbase root@dlcj04:/ies (144节点)
5.5、拷贝profile文件至其他节点
scp /etc/profile root@dlcj03:/etc (143节点)
scp /etc/profile root@dlcj04:/etc (144节点)
在两个子节点上分别使新的profile生效:
source /etc/profile
5.6、启动Hbase进程
首先启动zk集群,启动hdfs集群,之前已启动。
启动hbase,在主节点(142)上运行:
start-hbase.sh
142节点jps进程:
143节点jps进程:
144节点jps进程:
若出现以上进程,则hbse集群成功搭建完毕。
5.7、查看Hbase管理界面
在浏览器输入192.168.1.142:16010即可查看hbase界面信息,如下所示:
备用的Hmaster信息截图如下所示:
若在搭建的过程中遇到问题,请咨询博主,谢谢大家捧场!