Hadoop 全家桶分布式搭建的混沌笔记

Hadoop 全家桶分布式搭建

先安装JDK

解压安装包后配置环境变量
# JDK env

JAVA_HOME=/root/app/jdk/jdk1.8.0_144
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$PATH:$JAVA_HOME/bin

export JAVA_HOME
export CLASSPATH
export PATH

先明确对应的分布式节点的功能与角色

笔者的节点部署
nameaddress
hdmaster192.168.175.11
hdslave1192.168.175.12
hdslave2192.168.175.13
hdslave3192.168.175.14
hdmasterhdslave1hdslave2hdslave3
Namenode
Datanode
ResourceManager
NM
Zookeeper
JournalNode
zkfc
HBase●(Master)●(BackupMaster)
Hive(MySQL)
Spark & Scala
Flume
Sqoop

Hadoop 本体分布式安装

Hadoop的核心配置文件存放于etc/hadoop/

请首先在etc/hadoop/hadoop-env.sh中指定JAVA_HOME的环境变量

安装包解压完毕之后需要修改以下几份核心配置文件
core-site.xml # 控制核心配置相关
hdfs-site.xml # 控制 HDFS 文件系统配置相关
mapred-site.xml # 控制 MapReduce 配置相关
yarn-site.xml # 控制 YARN 资源管理器配置相关

core-site.xml配置

fs.defaultFS 文件系统的地址,以协议名hdfs://<servicename>指定HDFS服务名
示例:hdfs://hdmx1

fs.defaultFS必须设置正确,否则NameNode将无法访问

hadoop.tmp.dir Hadoop用于储存临时文件的目录位置
示例:/root/appcache/hddt/hdtmp

ha.zookeeper.quorum 指定Zookeeper集群的地址
示例:hdmaster:2181, ...

ha.zookeeper.session-timeout.ms 指定ZFKC的切换超时
示例:5000

hdfs-site.xml 配置

dfs.replication 文件系统的数据副本数
示例:1

dfs.namenode.name.dir 指定NameNode的Name Table(fsimage)的存放位置,使用逗号可以分隔开多个冗余存放地址
示例:/root/appcache/hddt/dfs/name

dfs.datanode.data.dir 指定DataNode的数据块存放地址,使用逗号可以分隔开多个数据块存放地址
示例:/root/appcache/hddt/dfs/data

dfs.webhdfs.enabled 指定是否启用Web HDFS(REST API)
示例:true

dfs.nameservices 指定文件系统服务名
示例: hdmx1

这里的服务名必须与core-site.xml中的fs.defaultFS的参数一致

dfs.ha.namenodes.<dfs.nameservices> 指定分布式下的NameNode的名称
示例:nn1, nn2

dfs.namenode.http-address.<dfs.nameservices>.<dfs.ha.namenodes.<dfs.nameservices>> 指定对应NameNode的http通信地址
示例:hdmaster:50070

dfs.namenode.rpc-address.<dfs.nameservices>.<dfs.ha.namenodes.<dfs.nameservices>> 指定对应NameNode的rpc通信地址
示例:hdmaster:9000

这里的所有服务名称必须一一对应
例如:

<!--这里的nameservices为hdmx1-->
<name>dfs.nameservices</name>
<value>hdmx1</value>
<!--这里的nameservices也必须为hdmx1-->
<name>dfs.ha.namenodes.hdmx1</name>
<value>nn1, nn2</value>
<!--这里的namenode也必须对应上面的参数nn1-->
<name>dfs.namenode.rpc-address.hdmx1.nn1</name>
<value>hdmaster:9000</value>

dfs.namenode.shared.edits.dir 用于多节点进行通信同步其状态的分布文件系统根目录,这里示例填写了HDFS
示例:qjournal://hdmaster:8485, .../hdmx1

dfs.journalnode.edits.dir 用于存放EditsLog的地址
示例:/root/appcache/hddt/jndt

dfs.ha.automatic-failover.enabled 控制冗余节点自动切换功能的开关
示例:true

dfs.client.failover.proxy.provider.<dfs.nameservices> 指定冗余节点自动切换功能的代理
示例:org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider

dfs.ha.fencing.methods 指定服务隔离的方式
示例:

sshfence
shell</bin/true>

dfs.ha.fencing.ssh.private-key-files 指定用于ssh验证的私钥文件
示例:/root/.ssh/id_rsa

mapred-site.xml 配置

mapreduce.framework.name MapReduce作业时的运行框架
示例:yarn

mapreduce.jobhistory.address MapReduce任务历史服务器的地址
示例:hdmaster:10020

mapreduce.jobhistory.webapp.address MapReduce任务历史服务器的Web UI地址
示例:hdmaster:19888

yarn-site.xml 配置

yarn.resourcemanager.ha.enabled YARN资源管理器的开关
示例:true

yarn.resourcemanager.cluster-id YARN资源管理器的集群ID
示例:yarnid

yarn.resourcemanager.ha.rm-ids YARN资源管理器的节点名
示例:rm1, rm2

yarn.resourcemanager.hostname.<yarn.resourcemanager.ha.rm-ids> YARN资源管理器的节点主机名
示例:hdslave2

这里的节点名必须一一对应,yarn.resourcemanager.ha.rm-ids里面写了什么就要写什么

yarn.resourcemanager.zk-address YARN资源管理器的Zookeeper集群地址
示例:hdmaster:2181, ...

yarn.nodemanager.aux-services YARN的NodeManager运行的服务名称
示例:(若要运行MapReduce的话请设置为)mapreduce_shuffle

yarn.log-aggregation-enable YARN日志聚合
示例:true

yarn.resourcemanager.recovery.enabled 打开这个选项后会将正在YARN上运行的应用的状态信息保存到下面一项的参数中
示例:true

yarn.resourcemanager.store.class 用于储存RM Recovery的信息的接口
示例:org.apache.hadoop.yarn.server.resoucemanager.recovery.ZKRMStateStore

注意下面这两项配置必须设置,否则NodeManage可能启动不了
yarn.nodemanager.resouce.memory-mb 设置为 1024 或更高
yarn.nodemanager.resource.cpu-vcores 设置为 1 或更高

slaves 配置

请在这个文件里面写入你的集群节点名单,无论运行的是DataNode还是NameNode还是其他服务,一个节点地址一行

ZooKeeper 安装

安装包解压完毕后首先配置环境变量
# Zookeeper env

ZOOKEEPER_HOME=/root/app/zook/zookeeper-3.4.5
PATH=$PATH:$ZOOKEEPER_HOME/bin

export ZOOKEEPER_HOME
export PATH

ZooKeeper 的配置

ZooKeeper的配置文件存放于conf/

将ZooKeeper的配置文件模板zoo_sample.cfg重命名为zoo.cfg再进行编辑

tickTime ZooKeeper内部计时的基本单位Tick的基数,单位为毫秒

n Tick 等于 n * tickTime (ms)

initLimit ZooKeeper集群初始化的耗时限制,需要根据集群中的节点数量来增加这个数值,因为更多的节点选举需要花费更多的时间,单位为 Tick

syncLimit ZooKeeper集群中节点通信的超时时间,配置时应该考虑集群内网络通信的延时,单位为 Tick

dataDir ZooKeeper集群的内存数据库快照存放地址,如果dataLogDir没有指定,将会默认存放到与此参数同一地址下

dataLogDir ZooKeeper集群的事务日志存放地址,建议与上面的dataDir分开存放

clientPort 客户端端口

peerType 节点类型,可以指定为observer,用于跨数据中心部署ZooKeeper节点的集群网络性能优化

需要在配置文件的末尾添加ZooKeeper集群节点的地址信息,格式如下
server.<id [1 - 255]>=<hostName>:<tickPort>:<electionPort>:[observer]
其中server.id为固定写法,id为1 - 255的数字,不能重复
<hostName>为主机名,<tickPort>为心跳汇报端口,<electionPort>为选举端口

注意ZooKeeper的集群节点数量推荐为奇数台,否则将会出现脑裂现象导致集群服务不可靠甚至不可用

示例:

server.1=hdmaster:2888:3888
server.2=hdslave1:2888:3888
server.3=hdslave2:2888:3888
server.4=hdslave3:2888:3888:observer # 这里设置为observer模式,所以并不会导致集群出现脑裂

完成配置之后到每一个节点的dataDir下创建一个myid文件并且往里面写入该节点的serverID

Hive 安装

安装包解压完毕后首先配置环境变量
# Hive env

HIVE_HOME=/root/app/hive/apache-hive-2.3.5-bin
PATH=$PATH:$HIVE_HOME/bin

export HIVE_HOME
export PATH

Hive 配置

Hive的配置文件存放于conf/

首先创建hive-site.xml,因为这个配置文件本来不存在与conf/

hive-site.xml配置

javax.jdo.option.ConnectionURL jdbc驱动数据库的链接字符串
示例:jdbc:mysql://localhost:3306/hivedb?createDatabaseIfNotExist=true

如果MySQL服务于Hive运行于同一节点请使用localhost作为主机名

javax.jdo.option.ConnectionDriverName 指定jdbc的驱动名
示例:com.mysql.jdbc.Driver

javax.jdo.option.ConnectionUserName 连接数据库的用户名
示例:root

javax.jdo.option.ConnectionPassword 连接数据库的密码
示例:123456AbCd@!

注意要把MySQL的驱动放到Hive的conf/目录下

Flume 安装

Flume的配置文件存放于conf/

将Flume的配置文件模板flume-env.sh.template重命名或者重定向到为flume.env.sh进行配置

安装包解压完毕后首先配置环境变量
# Flume env

FLUME_HOME=/root/app/flume/apache-flume-1.6.0-bin
PATH=$PATH:$FLUME_HOME

export FLUME_HOME
export PATH

flume-env.sh 配置

此配置文件仅用于Flume的环境变量配置,主要是设定JVM的运行参数

必须设定的参数为JAVA_HOME的环境变量,其他参数可自行根据需要设定
示例:

export JAVA_HOME=/root/app/jdk/jdk1.8.0_144

HBase 安装

安装包解压完毕后首先配置环境变量
# HBase env

HBASE_HOME=/root/app/hbase/hbase-1.2.3
PATH=$PATH:$HBASE_HOME/bin

export HBASE_HOME
export PATH

HBase的配置文件存放于conf/

hbase-env.sh 配置

此配置文件仅用于HBase的环境变量配置,主要是设定JVM的运行参数

必须设定的参数为JAVA_HOME的环境变量,其他参数可自行根据需要设定
示例:

export JAVA_HOME=/root/app/jdk/jdk1.8.0_144

若你的集群使用的是外部ZooKeeper,请将HBASE_MANAGES_ZK指定为false,否则HBase将会默认使用内建的ZooKeeper服务

hbase-site.xml 配置

hbase.rootdir 指定HBase的数据存放目录,这里可以填写物理地址或者HA集群的HDFS文件系统地址
示例:hdfs://hdmx1/hbase

habse.cluster.distributed 控制HBase是否启用分布式部署的开关,设置为false即可指定HBase运行在单节点模式(Standalone)
示例:true

hbase.zookeeper.quorum 指定Zookeeper的集群节点地址,使用,逗号分隔
示例:hdmastser:2181, ...

regionservers 配置

请在这个文件中指定HBase集群节点的地址,一行一个地址

backup-masters 配置

该文件不存在,请首先手动创建

该文件可以指定一个或者多个备用master节点的地址,一行一个地址

core-site.xmlhdfs-site.xml

请将同一个Hadoop集群部署中的这两个文件放到HBase的配置文件目录中

Sqoop 安装

Sqoop的配置文件存放于conf/

安装包解压完毕后首先配置环境变量
# Sqoop env

SQOOP_HOME=/root/app/sqoop/sqoop-1.4.7.bin__hadoop-2.6.0
PATH=$PATH:$SQOOP_HOME/bin

export SQOOP_HOME
export PATH

sqoop-env.sh 配置

将Sqoop的配置文件模板sqoop-env-template.sh重命名或者重定向到为sqoop-env.sh进行配置

这一个.sh文件用于指定其所需组件的路径

HADOOP_COMMON_HOME 指定Hadoop的目录所在位置
示例:/root/app/hadoop/hadoop-2.6.0

HADOOP_MAPRED_HOME 指定Hadoop的MapReduce目录的所在位置
示例:/root/app/hadoop/hadoop-2.6.0

HBASE_HOME 指定HBase的目录所在位置
示例:/root/app/hbase/hbase-1.2.3/bin/hbase

HIVE_HOME 指定Hive的目录的所在位置
示例:/root/app/hive/apache-hive-2.3.5-bin

ZOOCFGDIR 指定ZooKeeper的配置文件夹所在位置
示例:/root/app/zook/zookeeper-3.4.5/conf

MySQL驱动

请将MySQL的数据库驱动放置到lib/

Kafka 安装

Kafka的配置文件存放于config/

server.properties 配置

broker.id 当前节点在Kafka集群中的唯一标识
示例:0

确保这个id是整个集群里唯一的

num.network.threads 当前节点的网络通信的线程数
示例:3

num.io.threads 当前节点的用于磁盘I/O的线程数
示例:8

socket.send.buffer.bytes 数据发送的缓冲区大小,单位Byte
示例:102400

socket.receive.buffer.bytes 数据接收的缓冲区大小,单位Byte
示例:102400

socket.request.max.bytes 服务器接受的请求的大小上限
示例:104857600

log.dirs 存放事务日志的地址,若有多个请使用,逗号来分隔
示例:/tmp/kafka-logs

num.partitions 指定分区数,一个topic一个分区
示例:1

log.retention.hours 事务日志持久化的最大时间,单位小时
示例:168

log.segment.bytes 事务日志分块的大小上限,若一个分块达到这个上限,Kafka将会创建一个新的分块来记录日志,单位Byte
示例:1073741824

log.retention.check.interval.ms Kafka检测事务日志是否失效的时间间隔,单位毫秒
示例:300000

zookeeper.connect ZooKeeper节点的连接地址,使用逗号分隔
示例:hdmaster:2181, ...

zookeeper.connection.timeout.ms 连接ZooKeeper的连接超时时间,单位毫秒
示例:6000

consumer.properties 配置

bootstrap.servers 用于发现集群中其他Kafka节点的地址,建议填写任意两个或以上
示例:hdmaster:9092, ...

group.id Kafka集群id
示例:clsid

producer.properties 配置

bootstrap.servers 用于发现集群中其他Kafka节点的地址,建议填写任意两个或以上
示例:hdmaster:9092, ...

compression.type 产生数据的压缩编码格式,可选none, gzip, snappy, lz4
示例:gzip

Spark 安装

在安装Spark之前请先安装Scala

Spark的配置文件存放于conf/

spark-env.sh 配置

将Spark的配置文件模板spark-env.sh.template重命名或者重定向到为spark-env.sh进行配置

JAVA_HOME 指定JAVA所在的目录
示例:/root/app/jdk/jdk1.8.0_144

SCALA_HOME 指定Scala所在的目录
示例:/root/app/scala/scala-2.11.8

HADOOP_HOME 指定Hadoop所在的目录
示例:/root/app/hadoop/hadoop-2.6.0

HADOOP_CONF_DIR 指定Hadoop配置文件所在的目录
示例:/root/app/hadoop/hadoop-2.6.0/etc/hadoop

SPARK_DAEMON_MEMORY 指定Spark的工作内存
示例:512m

SPARK_WROKER_CORES 指定Spark的工作核心数
示例:1

SPARK_DAEMON_JAVA_OPTS 指定Spark的JVM参数行
示例:-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=hdmaster:2181,hdslave1:2181,hdslave2:2181,hdslave3:2181 -Dspark.deploy.zookeeper.dir=/spark

-Dspark.deploy.recoveryMode指的是FailControl的恢复方式
-Dspark.deploy.zookeeper.url指的是ZooKeeper集群的连接地址
-Dspark.deploy.zookeeper.dir指的是ZooKeeper保存Spark数据的位置

slaves的配置

请在该文件下填入集群节点的地址,一行一个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值