小型大数据平台搭建
目录
前言
一、 搭建环境
1.1集群规划
二、 集群的相关配置
2.1 新建用户hadoop
2.2 更改主机名
2.3 主机和IP做相关映射
2.4 SSH免密码登录
2.5 时间配置
2.6 整体安装目录安排
三、 Hadoop HA环境搭建
3.1 JDK配置
3.2 安装配置Zookeeper集群
3.3 安装配置hadoop HA集群
四、 Hive+MySQL 的安装与配置
4.1 Hive的安装部署
4.2 MySQL数据库安装配置
4.3 修改hive-site.xml
4.4 拷贝mysql驱动包到hive的lib目录下
五、 HBase完全分布式集群搭建
5.1 解压安装
5.2 修改hbase-site.xml
5.3 修改regionserver
5.4 将Hbase目录分发到其他节点
5.5 启动进程
六、 Flume安装部署
6.1 解压安装
6.2 修改flume-env.sh
6.3 配置文件拷贝
七、 Kafka安装部署
7.1 安装Scala
7.2 解压安装Kafka
7.3 修改配置文件
7.4 启动服务
八、 Sqoop安装部署
8.1 解压Sqoop
8.2 修改sqoop-env.sh
8.3 导入MySQL驱动包
8.4 测试连接数据库
前言
搭建基于CDH Hadoop高可用性的集群,主要框架有:HDFS HA、YARN HA、Zookeeper、HBase HA、Mysql、Hive、Sqoop、Flume-ng、kafka、安装,可用于批量数据的收集、转换、清洗、分析、存储、查询。
相关软件:
下载地址:http://archive-primary.cloudera.com/cdh5/cdh/5/
一 搭建环境
1.1集群规划
主机名 |
IP |
安装软件 |
运行的节点 |
hadoop01 |
192.168.60.121 |
JDK、Hadoop |
NameNode、 DFSZKFailoverController、 JournalNode、 |
hadoop02 |
192.168.60.122 |
JDK、Hadoop、Flume |
NameNode、 DFSZKFailoverController、 JournalNode、 |
hadoop03 |
192.168.60.123 |
JDK、Hadoop、Kafka、Flume |
ResourceManager、 JournalNode、 Kafka |
hadoop04 |
192.168.60.124 |
JDK、Hadoop、Kafka、Flume |
ResourceManager、 DataNode Kafka |
hadoop05 |
192.168.60.125 |
JDK、Hadoop、zookeeper、HBase、Kafka、Flume |
DataNode、 NodeManager、 QuorumPeerMain、 HMaster、HRegionServer、 Kafka |
hadoop06 |
192.168.60.126 |
JDK、Hadoop、zookeeper、HBase、Flume |
DataNode、 NodeManager、 QuorumPeerMain、 HMaster、HRegionServer |
hadoop07 |
192.168.60.127 |
JDK、Hadoop、zookeeper、HBase、Hive、MySQL、Sqoop |
DataNode、 NodeManager 、 QuorumPeerMain、 HRegionServer、 Runjar |
说明:
1、本次搭建,安排了两个NameNode节点,分别是1、2号机,两台NameNode,一台处于active状态,另一台处于standby状态。ActiveNameNode对外提供服务,Standby NameNode不对外提供服务,仅同步active namenode状态,以便能够在它失败时进行快速切换。
2、Hadoop 官方提供了两种 HDFSHA的解决方案,一种是NFS,另一种是QJM。在本次搭建中,使用QJK,主备NameNode通过JournalNode同步数据,只要成功写入多数JournalNode即认为写入成功,所以要配置奇数个JournalNode,我们配置了3个。
3、本次搭建上,配置了2个ResourceManager,一个是Active,一个是Standby,状态由zookeeper进行协调
二、集群的相关配置
2.1 新建用户hadoop
在7台机器都新建hadoop的用户名,都以这个普通用户的权限进行操作,设置同样的口令
adduser hadoop
给用户hadoop设置sudo权限
vi /etc/sudoers
hadoop ALL=(ALL) ALL
2.2 更改主机名
集群所有的机器都要做这个操作。
输入 vim /etc/sysconfig/network
修改localhost.localdomain主机名称,每台名称都不一样
例如: HOSTNAME=hadoop01/2/3/4/5/6/7/
注: 名称更改了之后输入reboot重启才会生效。
2.3 主机和IP做相关映射
在01机器上操作,设置好无密码登录后,scp到其它6台机器上
vim /etc/hosts
添加所有主机映射
192.168.60.121 hadoop01
192.168.60.122 hadoop02
192.168.60.123 hadoop03
192.168.60.124 hadoop04
192.168.60.125 hadoop05
192.168.60.126 hadoop06
192.168.60.127 hadoop07
2.4 SSH免密码登录
首先在每台机器上都执行一遍生成秘钥文件
输入:ssh-keygen -t rsa
然后分别将hadoop01、hadoop02、hadoop03、hadoop04、hadoop05、hadoop06、hadoop07的公匙发送到hadoop01上,在hadoop01上的实现免密码登陆。
hadoop01上操作:ssh-coyp-id hadoop01
hadoop02上操作:ssh-coyp-id hadoop01
hadoop03上操作:ssh-coyp-id hadoop01
hadoop04上操作:ssh-coyp-id hadoop01
hadoop05上操作:ssh-coyp-id hadoop01
hadoop06上操作:ssh-coyp-id hadoop01
hadoop07上操作:ssh-coyp-id hadoop01
然后将hadoop01目录./.ssh下的authorized_keys文件scp到其他机器的 /root/.ssh 目录下
scp authorized_keys Hadoop02:/home/hadoop/.ssh
scp authorized_keys Hadoop03:/home/hadoop/.ssh
scp authorized_keys Hadoop04:/home/hadoop/.ssh
scp authorized_keys Hadoop05:/home/hadoop/.ssh
scp authorized_keys Hadoop06:/home/hadoop/.ssh
scp authorized_keys Hadoop07:/home/hadoop/.ssh
2.5 时间配置
本次搭建以hadoop01主机的时钟为准,hadoop01主机开通ntpd服务
查看当前系统ntpd服务是否开启:$ sudo service ntpd status
开启服务:$ sudo service ntpd start
设置开机启动:$ sudo chkconfig ntpd on
修改系统配置文件
$ sudo vi /etc/ntp.conf
第一处修改:修改成自己的网段
Restrict 192.168.60.121 mask 255.255.255.0 nomodify notrap
第二次修改:模拟内网环境,不需要连外网,注释掉下面参数
第三次修改:将本地服务注释去掉
修改完保存退出,重启ntpd服务生效
$ sudo service ntpd restart
每台机器都编写一个crontab定时任务,每十分钟执行一次
0-59/10 * * * * /usr/sbin/ntpdate hadoop01
2.6 整体安装目录安排
所有配置框架都安装在~/opt/modules/目录下
三、Hadoop HA环境搭建
3.1 JDK配置
在01机解压JDK安装包
$ tar –zxvf home/hadoop/opt/software/jdk-7u80-linux-x64.tar.gz –C home/hadoop/opt/modules
配置JAVA_HOME
$ sudo vi /etc/profile
export JAVA_HOME=/home/hadoop/opt/modules/jdk1.7.0_80
$ sudo source /etc/profile
3.2 安装配置Zookeeper集群
先再hadoop05机器上操作
解压Zookeeper到目录/opt/modules/下
修改zoo.cfg文件
指定本地数据存储目录:dataDir=/home/hadoop/opt/modules/zookeeper-3.4.5/data/zkData
指定所有ZK节点服务端的实例
servier.5=hadoop05:2888:3888
servier.6=hadoop06:2888:3888
servier.7=hadoop07:2888:3888
在/opt/modules/zookeeper-3.4.5/data/zkData下vi myid文件,写1,保存退出
将配置文件分发到其他节点
$ scp –r zookeeper-3.4.5/ hadoop06:/opt/modules/
$ scp –r zookeeper-3.4.5/ hadoop07:/opt/modules/
在06和07机器上修改分发好的myid文件,改成对应的编号:06对应6,07对应7
启动: $ bin/zkServer.sh start
查看状态: $ bin/zkServier.sh status
3.3 安装配置hadoop HA集群(在1号机上操作)
3.3.1、解压hadoop安装包到目录/opt/modules/下 (所机器全部统一这个目录)
3.3.2、指定JAVA_HOME目录
进入hadoop的配置目录/home/hadoop/hadoop-2.5.0/etc/hadoop
编辑hadoop-env.sh,指定JAVA_HOME目录
export JAVA_HOME=/home/hadoop/opt/modules/jdk1.7.0_80
3.3.3 编辑core-site.xml
<!-- Put site-specific propertyoverrides in this file. -->
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1/</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/opt/modules/hadoop-2.5.0/tmp</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop05:2181,hadoop06:2181,hadoop07:2181</value>
</property>
</configuration>
3.3.4 编辑hdfs-site.xml
<configuration>
<!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 -->
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<!--ns1下面有两个NameNode,分别是nn1,nn2 -->
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property>
<!—指定两个namenode的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn1</name>
<value>hadoop01:9000</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>hadoop02:9000</value>
</property>
<!--指定两个namenode的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>hadoop01:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>hadoop02:50070</value>
</property>
<!--指定NameNode的元数据在JournalNode上的存放位置 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop01:8485;node02:8485;node03:8485/ns1</value>
</property>
<!--指定JournalNode在本地磁盘存放数据的位置 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/hadoop/opt/modules/hadoop-2.5.0/journaldata</value>
</property>
<!--开启NameNode失败自动切换 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!--配置自动切换实现方式 -->
<property>
<name>dfs.client.failover.proxy.provider.ns1</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!--配置隔离机制方法,本次使用SSH-->
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence shell(/bin/true)</value>
</property>
<!--使用sshfence隔离机制时需要ssh免登陆 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/hadoop/.ssh/id_rsa</value>
</property>
<!--配置sshfence隔离机制超时时间 -->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
</configuration>
3.3.5 编辑mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop01:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop01:19888</value>
</property>
<property>
<name>mapred.map.tasks</name>
<value>10</value>
</property>
<property>
<name>mapred.reduce.tasks</name>
<value>2</value>
</property>
</configuration>
3.3.6 编辑 yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>hadoop03</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>hadoop04</value>
</property>
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yrc</value>
</property>
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>hadoop05:2181,hadoop06:2181,hadoop07:2181</value>
</property>
</configuration>
3.3.7 修改slaves
[hadoop01]$ cat slaves
node05
node06
node07
[hadoop03]$ cat slaves
node05
node06
node07
3.3.8、将配置好的hadoop拷贝到其它节点
scp -r opt/modules/hadoop hadoop02:opt/modules/hadoop
scp -r opt/modules/hadoop hadoop03:opt/modules/hadoop
其它几个节点类似
同时也要把 /etc/profile /etc/hosts 两个文件复制到所有节点机上
3.3.9、 先启动05、06、07节点zookeeper
$ bin/zkServer.sh start
3.3.10、 再启动01、02、03节点的JournalNode
$ sbin/hadoop-daemon.sh start journalnode
3.3.11 hadoop格式化
在01号上执行 bin/hdfs namenode –format
3.3.12 同步元数据
启动01机器的namenode
切换到02机器上执行元数据同步
$ bin/hdfs namenode –bootstrapStandby
3.3.13 初始化ZKFC
先停掉两台namenode服务进程,执行
$ bin/hdfs zkfc –formatZK
进入ZK客户端,检查是否生成了hadoop-ha的节点目录
3.3.13 启动ZKFC监听器
在两台namenode所在的机器上分别启动ZKFC监听器
$ sbin/hadoop-daemon.sh start zkfc
3.3.14 测试
UI页面查看
上传产品到HDFS测试
运行WordCount测试
四、 Hive + MySQL 的安装与配置
4.1 Hive的安装部署 (在07机器上)
4.1.1 解压安装Hive到/opt/modules/目录下
tart –zxvf hive-0.13.1-cdh5.3.6.tar.gz –C ~/opt/modules
4.1.2 配置Hive数据存储目录
bin/hdfs dfs –mkdir /tmp
bin/hdfs dfs –mkdir /uer/hive/warehouse
bin/hdfs dfs –chmod g+w /tmp
bin/hdfs dfs –chmod g+w /user/hive/warehouse
4.1.3 修改hive-env.sh
# Set HADOOP_HOME
HADOOP_HOME=/opt/modules/hadoop-2.5.0
# Hive Configuration Directory
export HIVE_CONF_DIR=/opt/modules/hive-0.13.1-bin/conf
4.1.4 启动Hive
$ bin/hive
4.2 MySQL数据库安装配置
4.2.1 安装mysql (在07机器上)
查询系统中是否存在MySQL
$ sudo rpm –qa|grep mysql
卸载自带MySQL
$ sudo rpem –e –nodeps ……
yum安装MySQL
$ sudo yum –y insall mysql-server
查看MySQL是否开启
$ sudo service mysqld status
启动服务
$ sudo service mysqld start
设置开机启动MySQL
$ sudo chkconfig mysqld on
4.2.2 设置MySQL管理员root的密码
mysqladmin –u root passward `123456`
进入mysql –uroot –p
4.2.3 设置MySQL链接的权限
在mysql数据库user表中插入一条数据
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 123456 WITH GRANT OPTION;
删除表中的信息
delect from user where host=`127.0.0.1`
delect from user where host=`hadoop07`
delect from user where host=`localhost`
刷新并退出MySQL
flush privileges;
quit
sudo service mysqld restart
4.3 修改hive-site.xml
<propery>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://beifeng07:3306/metastore?createDateIfNotExist=true</value>
</propery>
<propery>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>con.mysql.jdbc.Driver</value>
</propery>
<propery>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</propery>
<propery>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</propery>
4.4 拷贝mysql驱动包到hive的lib目录下
$ cp –r mysql-connector-java-5.1.27-bin.jar /opt/modules/hive-0.13.1-bin/lib/
五 HBase完全分布式集群搭建
5.1 解压安装 (先在05机器上操作)
$ tar –zxvf hbase-0.98.6-cdh5.3.5.tar.gz –C ~/opt/modules/
5.2 修改hbase-site.xml
<propery>
<name>hbase.tmp.dir</name>
<value>/opt/modules/hbase-0.98.6-hadoop2/data/tmp</value>
</propery>
<propery>
<name>hbase.rootdir</name>
<value>hdfs://hadoop05:8020/hbase</value>
</propery>
<propery>
<name>hbase.cluster.distributed</name>
<value>true</value>
</propery>
<propery>
<name>hbase.zookeeper.quorum</name>
<value>hadoop05,hadoop06,hadoop07</value>
</propery>
5.3 修改regionserver,添加
hadoop05
hadoop06
hadoop07
5.4 将Hbase目录分发到其他节点
$ scp –r hbase-0.98.6-hadoop2/ hadoop06:/opt/modules/
$ scp –r hbase-0.98.6-hadoop2/ hadoop07:/opt/modules/
5.5 启动进程
5.5.1 分别启动hadoop各节点和zookeeper各节点
5.5.2 启动hadoop05和hadoop06机器Hmaseter
$ bin/hbase-daemon.sh start master
启动hadoop05、hadoop06、hadoop07机器HregionServer
$ bin/hbase-daemon.sh start regionserver
六 Flume安装部署
分别在hadoop02、hadoop03、hadoop04、hadoop05、hadoop06机器上操作
6.1 解压安装包到/opt/modules/目录下
$ tar –zxvf flume-ng-1.5.0-cdh5.3.6-src.tar.gz –C ~/opt/modules/
6.2 修改flume-env.sh
export JAVA_HOME=/home/hadoop/opt/modules/jdk1.7.0_80
6.3 配置文件拷贝
将hadoop的core-site.xml和hdfs-site.xml文件拷贝到flume/conf下
可通过5台机器部署扇出或扇入、高可用性操作
七 Kafka安装部署
在hadoop03、hadoop04、hadoop05机器上操作
7.1 安装Scala
7.2 解压安装Kafka
$ tar –zxf kafka_2.11-0.8.2.1.tgz –C ~/opt/modules/
7.3 修改配置文件
hadoop03上配置文件为 server3.properties,自定义配置如下
broker.id=3
port=9093
zookeeper.connect=hadoop03:2181,hadoop04:2181,hadoop05:2181/kafka
hadoop04上配置文件为 server4.properties,自定义配置如下
broker.id=4
port=9094
zookeeper.connect=hadoop03:2181,hadoop04:2181,hadoop05:2181/kafka
hadoop05上配置文件为 server5.properties,自定义配置如下
broker.id=5
port=9095
zookeeper.connect=hadoop03:2181,hadoop04:2181,hadoop05:2181/kafka
7.4 启动服务
先启动各zk服务
$ bin/zkServer.sh start
再启动kafka服务
$ bin/kafka-server-start.sh
八 Sqoop安装部署
8.1 解压Sqoop (在hadoop07主机上)
tar –zxf sqoop-1.4.5-cdh5.3.6.tar.gz –C ~/opt/modules/
8.2 修改sqoop-env.sh
指定各框架安装目录
export HADOOP_COMMON_HOME=
export HADOOP_MAPRED_HOME=
export HIVE_HOME=
export HBASE_HOME=
……
8.3 导入MySQL驱动包
将MySQL驱动包放到sqoop的lib目录下
8.4 测试连接数据库
bin/sqoop \
list-tables \
--connect jdbc:mysql://hadoop07:3306/metastore \
--username root \
--password 123456
posted on 2018-12-05 17:46 PerfectData 阅读(415) 评论(0) 编辑 收藏 举报