包含hadoop、hive、hbase、zookeeper、storm、spark、Kafka、flume、sqoop
一、服务器基本配置
服务器系统版本:CentOS release 6.4 (Final)
JDK版本:java version “1.7.0_60*
二、 集群信息
三、 各组件版本信息
四、安装步骤
4.1 环境基本配置
addusr hadusr #创建用户
passwd hadusr #修改密码
mkdir hdfs hdfs_tmp #创建文件夹
chown -R hadusr:hadusr hdfs hdfs_tmp #设置文件夹宿主
vi /etc/sysconfig/network #修改主机名 重启后生效
vi /etc/hosts #配置IP 主机名映射
4.2 配置集群无密登陆
#生成秘钥
A、ssh-keygen -t rsa
#收集所有机器上.ssh下生成的id_rsa.pub(公钥文件),
#并将所有的公钥文追加至authorized_keys文件
B、cat id_rsa.pub >> authorized_keys
#将公钥分发至所有机器(以hdp04为例)
C、scp -r ~/.ssh/authorized_keys hdp04:/home/hadusr/.ssh/
D、然后赋权:chmod 600 authorized_keys #给公钥文件赋权
4.3 hadoop安装配置
a、配置core-site.xml文件
<property>
<name>hadoop.tmp.dir</name>
<value>/hdfs/hadoop_tmp</value>
<description>
Abase for other temporary directories.
</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hdp01:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>4096</value>
</property>
配置b、java环境变量
vi hadoop-env.sh 和 yarn-env.sh
#在开头添加如下JAVA环境变量(一定要添加切勿少了)
export JAVA_HOME=/soft/jdk1.7.0_79
c、配置hdfs-site.xml文件
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///hdfs_tmp/hadoop_name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///hdfs_tmp/hadoop_data</value>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.nameservices</name>
<value>hadoop-cluster1</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hdp01:50090</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
d、配置mapred-site.xml文件
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<final>true</final>
</property>
<property>
<name>mapreduce.jobtracker.http.address</name>
<value>hdp01:50030</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>hdp01:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hdp01:19888</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>http://hdp01:9001</value>
</property>
e、配置yarn-site.xml文件
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hdp01</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>hdp01:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>hdp01:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>hdp01:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>hdp01:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>hdp01:8088</value>
</property>
f、配置slaves
vi slaves 将slaves节点的机器配置在该文件
g、格式化集群
将以上配置好的hadoop分发至集群其它机器上
h、格式化集群
hadoop namenode -format
i、配置环境变量后启动
start-all.sh
j、查看集群状态
hdfs dfsadmin –report
4.4 zookeeper安装
a、下载zookeeper-3.3.6.tar.gz压缩包,并解压
b、2、 Zookeeper配置
进入zookeeper安装目录conf文件夹,复制zoo_sample.cfg并命名为zoo.cfg,配置好该文件即可,具体内容如下:
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
dataDir=/hadoop_install/zookeeper-3.3.6/data
# the port at which the clients will connect
clientPort=2222
server.1=Hadoop-Main-Server:2888:3888
server.2=Hadoop-DataNode-01:2888:3888
server.3=Hadoop-DataNode-02:2888:3888
server.4=Hadoop-DataNode-03:2888:3888
c、参数说明
initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 5个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒
syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2*2000=4 秒
server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。
注意:除了修改 zoo.cfg 配置文件,集群模式下还要配置一个文件 myid,这个文件在 dataDir 目录下,这个文件里面就有一个数据就是 A 的值,Zookeeper 启动时会读取这个文件,拿到里面的数据与 zoo.cfg 里面的配置信息比较从而判断到底是那个 server。
d、将配置好的zookeeper拷贝至所有节点
e、启动停止命令
通过zkServer.sh [start][stop][status]可启动、停止、查看zookeeper状态
4.5 storm安装
4.5.1 ZMQ(消息队列)安装
下载zeromq-2.2.0.tar.gz
解压:tar -zxvf zeromq-2.2.0.tar.gz -C /soft/
安装:./configure
安装遇到以下问题以及解决方法,不同环境可能遇到不同问题,针对性解决即可
执行 ./configure遇到如下错误
解决办法如下
如上图,依然报错,继续解决
安装:util-linux-2.21.1.tar.gz
解压后 ./configure
依然报错,使用 ./configure --without-ncurses && make即可
最后:make install解决
继续安装zeromq-2.2.0.tar.gz
./configure
make
make install
安装成功,结束。
4.5.2 编译安装JZMQ(是java调用c++的一个桥梁)
下载jzmq-master.zip(master)
#安装解压工具
yum install unzip
#解压
unzip master
安装:
cd jzmq-master
./autogen.sh
出现以下错误:
安装 pkg-config
依然报错:
下载
wget http://pkgconfig.freedesktop.org/releases/pkg-config-0.28.tar.gz
解压安装
./configure
依然出现如下错误
使用如下方式安装:
./configure --with-internal-glib
make
make install
安装成功
继续安装jmzq
./ autogen.sh (发现缺少libtool yum install libtool
OK,搞定
4.5.3 下载安装storm
storm相关配置 /conf/storm.yaml
a、
storm.zookeeper.servers:
storm集群使用的Zookeeper集群地址,其格式如下:
b、
storm.local.dir:
Nimbus和Supervisor进程用于存储少量状态,
如jars、confs等的本地磁盘目录,
需要提前创建该目录并给以足够的访问权限。然后在storm.yaml中配置该目录,如上图:
c、
java.library.path:
Storm使用的本地库(ZMQ和JZMQ)加载路径,
默认为"/usr/local/lib:/opt/local/lib:/usr/lib",
一般来说ZMQ和JZMQ默认安装在/usr/local/lib 下,因此不需要配置即可。
d、
nimbus.host:
Storm集群Nimbus机器地址,各个Supervisor工作节点需要知道哪个机器是Nimbus,以便下载Topologies的jars、confs等文件
e、
supervisor.slots.ports:
对于每个Supervisor工作节点,需要配置该工作节点可以运行的worker数量。每个worker占用一个单独的端口用于接收消息,该配置选项即用于定义哪些端口是可被worker使用的。默认情况下,每个节点上可运行4个workers,分别在6700、6701、6702和6703端口,如上图配置:
f、
zookeeper默认端口是2181 若为默认端口,该文件不需重配置端口
g、
drpc.servers 内存分配配置
h、主节点配置
nimbus.host: "hdp02"
以上所有步骤均在集群的每台机器上进行安装配置
4.5.3 storm集群启动
#客户端关闭 可正常运行
#主节点
nohup storm nimbus &
#界面
nohup storm ui &
#子节点
nohup storm supervisor &
#结束storm进程
storm kill SocketProcess
4.5.4 storm程序包提交
开发完成打jar包后:
#配置为可执行shell
Storm_syslog_warn.sh
#shell具体内容
storm jar /hdfs/test/xf9-log-handle-0.0.1-SNAPSHOT.jar com.xf9.log.topo.LogTopo xf9-syslog_warning
http://hdp02:8080/index.html即可查看集群状态
以上,说明storm安装完成并正常启动
4.6 spark安装
安装spark-2.1.0-bin-hadoop2.6版本
spark安装比较简单,进行相关配置即可
a、conf/spark-env.sh
export SPARK_MASTER_IP=hdp01
export SPARK_MASTER_PORT=7077
export JAVA_HOME=/usr/java/jdk1.7.0_60
export SCALA_HOME=/hdfs/scala-2.11.8
export SPARK_WORKER_MEMORY=2g
export HADOOP_CONF_DIR=/hdfs/hadoop-2.6.0/etc/hadoop
b、vi slaves配置子节点
hdp02
hdp03
hdp04
c、将配置好的软件包分发至其它机器即可
d、为了便于使用,配置好用户环境变量即可
e、集群启动
/sbin/start-all.sh即可启动集群
f、在bin目录下可启动spark-shell pyspark spark-sql等组件
后续继续分享spark的简单开发使用案例。
4.7 kafka安装
kafka下载解压后,分布在集群对应机器上即可,下面简单列下基本使用方法:
*服务启动(需要在集群机器上均启动)
#按此方法启动可保证服务在后台正常运行
kafka-server-start.sh -daemon /soft/kafka_2.10-0.8.2.1/config/server.properties >/dev/null 2>&1 &
*创建一个topic
##创建一个名称为my-topic的Topic,5个分区,并且复制因子为3
kafka-topics.sh --create --zookeeper hdp02:2181,hdp03:2181,hdp04:2181 --replication-factor 3 --partitions 5 --topic my-test
*查看topic
#查看名为my-test的topic
kafka-topics.sh --describe --zookeeper hdp02:2181,hdp03:2181,hdp04:2181 --topic my-test
#查看所有topic
kafka-topics.sh --describe --zookeeper hdp02:2181,hdp03:2181,hdp04:2181 --list
#具体参数说明
Partition: 分区
Leader : 负责读写指定分区的节点
Replicas : 复制该分区log的节点列表
Isr : "in-sync" replicas,当前活跃的副本列表(是一个子集),
并且可能成为Leader
模拟生产-消费过程
模拟生产-消费过程
在一个终端启动生产程序:
kafka-console-producer.sh --broker-list hdp02:9092,hdp03:9092,hdp04:9092 --topic my-test
在另一个终端自动消费程序:
kafka-console-consumer.sh --zookeeper hdp02:2181,hdp03:2181,hdp04:2181 --from-beginning --topic my-test
此时可以在Producer终端上输入字符串消息行,然后回车,就可以在Consumer终端上看到消费者消费的消息内容。
4.8 hive安装
下载解压后配置hive环境变量
vi /conf/hive-env.sh
#添加如下内容
export HADOOP_HOME=/hdfs/hadoop-2.6.0
export HIVE_CONF_DIR=/hdfs/apache-hive-1.2.0-bin/conf
#配置hive元数据存储信息,默认的存储为自带的derby数据库,只允许单用户访问
#配置数据库连接信息
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.168.1:3306/hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
#驱动配置
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
#配置连接mysql数据库的用户名和密码
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
<description>Username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
<description>password to use against metastore database</description>
</property>
以上配置完后,执行bin/hive命令即可启动
show databases; #查看数据库
use db; #指定使用的数据库
show tables; #查看数据库里面的表
#将hive配置成服务端,客户端单独启动模式
vi hive-site.xml
<property>
<name>hive.metastore.uris</name>
<value>thrift://192.168.168.1:9083</value>
<description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>
</property>
在后台启动服务端
nohup hive --service metastore 2>&1 &
再启动 /bin/hive 即可使用
4.9 hbase安装
1、下载hbase-0.94.8.tar.gz
2、tar –zxvf hbase-0.94.8.tar.gz解压该文件
3、相关配置
a、/conf下hbase-env.sh文件配置
在文件结尾增加以下环境变量
export HBASE_MANAGES_ZK=false
#true标识用自带的zookeeper,false标识使用单独安装的
export JAVA_HOME=/usr/java/jdk1.7.0_21
export HADOOP_HOME=/hadoop_install/hadoop-1.0.4
export HBASE_HOME=/hadoop_install/hbase-0.94.8
export HBASE_MANAGES_ZK=true
export HBASE_OPTS="$HBASE_OPTS -XX:+HeapDumpOnOutOfMemoryError -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode"
b、/conf下 hbase-site.xml文件配置
</configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://hdp01:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.master</name>
<value>hdfs://hdp01:60000</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>hdp02,hdp03,hdp04</value>
</property>
<property>
<name>zookeeper.session.timeout</name>
<value>60000</value>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
</configuration>
参数说明:
1、hbase.rootdir中需指明Hbase的数据存储位置,该主机名及端口必须
与namenode相同
2、hbase.cluster.distributed true说明为完全分布式
3、hbase.master 指明Hbase的主机
4、hbase.zookeeper.quorum配置参与zookeeper选举的机器,最好配置奇数个
5、hbase.zookeeper.property.clientPort配置zookeeper的通信
端口,需与zookeeper中的clientport一致。
c、/conf下 regionservers配置
在该文件填写所有datanode
d、配置完成后,将hbase-0.94.8文件拷贝至集群所有节点
4.10 flume安装
下载解压后即可,如果与mysql配合需下载mysql对应驱动包
简单配置:
配置java环境变量
vi /conf/flume-env.sh
JAVA_HOME=/usr/java/jdk1.7.0_60
4.11 sqoop安装
下载sqoop-1.4.6后解压
基本配置:
vi /conf/sqoop-env.sh
export HADOOP_COMMON_HOME=/hdfs/hadoop-2.6.0
export HADOOP_HOME=/hdfs/hadoop-2.6.0
export HIVE_HOME=/hdfs/apache-hive-1.2.0-bin
export HADOOP_MAPRED_HOME=/hdfs/hadoop-2.6.0
export HIVE_HOME=/hdfs/apache-hive-1.2.0-bin
export ZOOCFGDIR=/hdfs/zookeeper-3.4.6
4.12 hbase与hive集成
通过hbase与hive集成后,在hive创建的表以及相关数据可通过hbase进行相关操作,具体整合方法如下:
(里面有可能涉及到jar包拷贝,由于之前集成时没有记录,现在记不清楚了,以下列出一些关键点)
主要进行一些jar配置,hive-hbase-handler-1.2.0.jar版本不兼容会影响hive与hbase通信,可下载源码后将habse自带jar包考入后,从新打包然后考入hive里面即可。
<property>
<name>hive.aux.jars.path</name>
<value>file:///hdfs/apache-hive-1.2.0-bin/lib/hive-hbase-handler-1.2.0.jar,file:///hdfs/hbase-1.2.4/lib/hbase-server-1.2.4.jar,file:///hdfs/zookeeper-3.4.6/zookeeper-3.4.6.jar,file:///hdfs/hbase-1.2.4/lib/protobuf-java-2.5.0.jar,file:///hdfs/apache-hive-1.2.0-bin/lib/hbase-client-1.2.4.jar</value>
</property>
在hive中创建一个hbase可识别的表:
CREATE TABLE hbase_table_1(key int, value string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val")
TBLPROPERTIES ("hbase.table.name" = "xyz");