hadoop生态组件安装

本文是在自己工作中用到各个组件的安装方式的记录,包括:hadoop,hbase,kafka,es,hive,flume,druid,flink,spark等,在持续更新中。具体的使用记录另有博文具体介绍。

hdfs

  • 这里是列表文本Hadoop有三种分布模式:单机模式、伪分布、全分布模式,本文讲解分布式搭建方式。
    假设有a,b,c三个节点。

第一步:新建用户

# 增加用户,并赋予其密码
$ adduser hadoop
$ passwd hadoop            # ur password for eagle user
# 赋予用户root权限
$ chmod u+w /etc/sudoers
$ vim /etc/sudoers
  # 找到 `root ALL=(ALL) ALL`这行,并在下面添加hadoop用户
  hadoop    ALL=(ALL)    ALL
$ chmod u-w /etc/sudoers
# 切换到 hadoop用户
$ su - hadoop
$ cd /home/hadoop
# 存放软件目录 & 安装目录 & 日志目录
$ mkdir install && mkdir software && mkdir logs

第二步:修改节点用户名/安装jdk/ssh免密登陆:

##修改用户名
$ vim /etc/hostname
//三个节点分别叫bigdata-01,bigdata-02,bigdata-03. 然后重启节点。

##安装jdk参考博文[ZOOKEEPER安装及测试](https://my.oschina.net/112612/blog/1584832 "ZOOKEEPER安装及测试")

## ssh免密登陆参见博文[免密登陆脚本(shell版)](https://my.oschina.net/112612/blog/1560133 "免密登陆脚本(shell版)")

第三部 下载并安装hadoop

$ cd /home/hadoop/install/
$ wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.8.4/hadoop-2.8.4.tar.gz
$ tar zxvf hadoop-2.8.4.tar.gz -C ~/software/
$ cd ~/software/
$ ln -s hadoop-2.8.4/ hadoop
$ cd hadoop/
$ bin/hadoop version
  Hadoop 2.8.4

配置

$ vim ~/.bashrc
  # .bashrc
  # Source global definitions
  if [ -f /etc/bashrc ]; then
          . /etc/bashrc
  fi
  # User specific aliases and functions
  # Hadoop Environment Variables
  export HADOOP_HOME=~/software/hadoop
  export HADOOP_INSTALL=$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_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
  export JAVA_HOME=~/software/java
  export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$JAVA_HOME/bin
$ source ~/.bashrc

配置文件处理

一共涉及以下几个文件

~/hadoop-2.8.4/etc/hadoop/hadoop-env.sh
~/hadoop-2.8.4/etc/hadoop/yarn-env.sh
~/hadoop-2.8.4/etc/hadoop/slaves
~/hadoop-2.8.4/etc/hadoop/core-site.xml
~/hadoop-2.8.4/etc/hadoop/hdfs-site.xml
~/hadoop-2.8.4/etc/hadoop/mapred-site.xml
~/hadoop-2.8.4/etc/hadoop/yarn-site.xml
#以上文件默认不存在的,可以复制相应的template文件获得

在修改之前,首先新建3个文件夹

$ cd /home/hadoop/software/
mkdir -p /data/tmp
mkdir -p /data/dfs/namenode
mkdir -p /data/dfs/datanode
  • 修改文件1.hadoop-env.sh
修改JAVA_HOME值(export JAVA_HOME=/home/software/java)
  • 修改文件2.yarn-env.sh
修改JAVA_HOME值(export JAVA_HOME=/home/software/java)
  • 修改文件3:slaves
bigdata-02
bigdata-03
  • 修改文件4:
    $ vim ~/software/hadoop/etc/hadoop/core-site.xml


 hadoop.tmp.dir
 file:/home/hadoop/software/hadoop/data/tmp
 Abase for other temporary directories.


 fs.defaultFS
 hdfs://bigdata-01:9000


 io.file.buffer.size
 131072


  • 修改文件5:
    $ vim ~/software/hadoop/etc/hadoop/hdfs-site.xml


      dfs.replication
      3
    
    
      dfs.namenode.name.dir
      file:/home/hadoop/software/data/dfs/namenode
    
    
      dfs.datanode.data.dir
      file:/home/hadoop/software/data/dfs/datanode
    
    
      dfs.webhdfs.enabled
      true
    
    
      dfs.namenode.secondary.http-address
      bigdata-01:9001
    

  • 修改文件6:mapred-site.xml


    mapreduce.framework.name
    yarn


    mapreduce.jobhistory.address
    bigdata-01:10020


    mapreduce.jobhistory.webapp.address
    bigdata-01:19888


  • 修改文件7:yarn-site.xml

    yarn.nodemanager.aux-services
    mapreduce_shuffle


    yarn.nodemanager.aux-services.mapreduce.shuffle.class
    org.apache.hadoop.mapred.ShuffleHandler


    yarn.resourcemanager.address
    bigdata-01:8032


    yarn.resourcemanager.scheduler.address
    bigdata-01:8030


    yarn.resourcemanager.resource-tracker.address
    bigdata-01:8031


    yarn.resourcemanager.admin.address
    bigdata-01:8033


    yarn.resourcemanager.webapp.address
    bigdata-01:8088 


  • 修改日志文件
$ mkdir -p /home/hadoop/logs/hadoop-hdfs/
$ vim ~/software/hadoop/etc/hadoop/log4j.properties
  # log4j.appender.RFAAUDIT.File=${hadoop.log.dir}/hdfs-audit.log
  log4j.appender.RFAAUDIT.File=/home/hadoop/logs/hadoop-hdfs/hdfs-audit.log

将以上操作的文件复制到另外两个节点上。
然后在bigdata-01上执行格式化并启动hadoop

$ bin/hdfs namenode -format
cd ../sbin;./start-dfs.sh

bigdata-01(master)出现以下现象则成功启动
[hadoop@lihao ~]$ jps
2324 NameNode
2839 Jps
2601 SecondaryNameNode
slave上则只有datanode进程。

启动yarn:
start-yarn.sh

最后在浏览器中输入:http://ip:50070,如果出现hadoop界面则安装成功,如果jps没有问题,而界面没有出现,则检查防火墙。

hbase

由于只有一台服务器,故只能搭建伪分布式集群。由于搭建hbase必须有zk和jdk,故也顺道搭建了zk的伪分布集群。

  1. zk伪分布式集群搭建
  • 所谓的“伪分布式集群”就是在一台服务器中,启动多个Zookeeper实例。“完全分布式集群”是每台服务器,启动一个Zookeeper实例。
  • 参见【zk操作】中下载zk安装包
cp conf/zoo_sample.cfg conf/zoo1.cfg
vim zoo1.cfg
dataDir=/home/hadoop/software/zookeeper/zoo1/data
clientPort=2181
#增加1
server.1=lihao:2888:3888
server.2=lihao:2889:3889
server.3=lihao:2890:3890
cp conf/zoo_sample.cfg conf/zoo2.cfg
vim zoo1.cfg
dataDir=/home/hadoop/software/zookeeper/zoo2/data
clientPort=2182
#增加2
server.1=lihao:2888:3888
server.2=lihao:2889:3889
server.3=lihao:2890:3890
cp conf/zoo_sample.cfg conf/zoo3.cfg
vim zoo1.cfg
dataDir=/home/hadoop/software/zookeeper/zoo3/data
clientPort=2183
#增加
server.1=lihao:2888:3888
server.2=lihao:2889:3889
server.3=lihao:2890:3890

然后执行

mkdir -p ..../zookeeper/zoo1/data
mkdir -p ..../zookeeper/zoo2/data
mkdir -p  ..../zookeeper/zoo3/data
echo '1'>zoo1/data/myid
echo '2'>zoo1/data/myid
echo '3'>zoo1/data/myid

然后启动三个节点

bin/zkServer.sh start conf/zoo1.cfg
bin/zkServer.sh start conf/zoo2.cfg
bin/zkServer.sh start conf/zoo3.cfg

最后检查每个节点的状态:

bin/zkServer.sh status conf/zooX.cfg

hbase安装

下载链接

修改conf/hbase-env.sh

export JAVA_HOME=JDK_PATH
export HBASE_CLASSPATH=/home/hadoop/software/hbase/conf
export JAVA_CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export HBASE_OPTS="-XX:+UseConcMarkSweepGC"
export HBASE_MANAGES_ZK=true     [如果你是使用hbase自带的zk就是true,如果使用自己的zk就是false]

修改conf/hbase-site.xml


hbase.master
A:60000


hbase.master.maxclockskew   #时间同步允许的时间差
180000


hbase.rootdir
hdfs://A:9000/hbase #hbase共享目录,持久化hbase数据


hbase.cluster.distributed #是否分布式运行,false即为单机
true


hbase.zookeeper.quorum #zookeeper地址
A,B,C


hbase.zookeeper.property.dataDir #zookeeper配置信息快照的位置
/data/hbase/tmp

然后将hadoop的core-site.xml和hdfs-site.xml也复制到该文件夹下。

修改环境变量

$ vim ~/.bash_profile
export HBASE_HOME=/home/hadoop/software/hbase
export PATH=$HBASE_HOME/bin:$PATH
# 使配置生效
$ source /etc/profile

将修改后的hbase安装包复制到另外两台上去。

scp -r hbase/ B:/home/hadoop/software/
scp -r hbase/ C:/home/hadoop/software/

然后在B/C上做相同操作。

最后在master节点上启动hbase

start-hbase.sh

然后jps查看进程

6788 HRegionServer
4133 SecondaryNameNode
7768 Jps
3672 QuorumPeerMain
3417 QuorumPeerMain
3865 NameNode
3626 QuorumPeerMain
7386 HMaster
3965 DataNode

最后页面操作显示:http:A:16010

es/kibana

参见博文ES基础操作

kafka分布式集群搭建

  • 以下为分布式集群搭建,节点分别为:a,b,c三个节点。其中zk是安装在zookeeper用户下的;jdk为kafka用户下。

首先:kafka集群搭建依赖以下组件:

  1. jdk>1.7
  2. zookeeper.
    以上两个部分参看博文

然后,下载安装

  1. 下载链接为:kafka
  2. 将下载的kafka_2.10-0.8.2.2.tgz包解压至~/software下,并
tar -zxvf kafka_2.10-0.8.2.2.tgz 
ln -s kafka_2.10-0.8.2.2  kafka
cd kafka/config
vim server..properties 
######
broker.id=0  #当前机器在集群中的唯一标识,和zookeeper的myid性质一样,另外两台可分别为1,2
port=9092 #当前kafka对外提供服务的端口默认是9092
num.network.threads=3 #这个是borker进行网络处理的线程数
num.io.threads=8 #这个是borker进行I/O处理的线程数
log.dirs=/opt/kafka/kafkalogs/ #消息存放的目录,这个目录可以配置为“,”逗号分割的表达式,上面的num.io.threads要大于这个目录的个数这个目录,如果配置多个目录,新创建的topic他把消息持久化的地方是,当前以逗号分割的目录中,那个分区数最少就放那一个
socket.send.buffer.bytes=102400 #发送缓冲区buffer大小,数据不是一下子就发送的,先回存储到缓冲区了到达一定的大小后在发送,能提高性能
socket.receive.buffer.bytes=102400 #kafka接收缓冲区大小,当数据到达一定大小后在序列化到磁盘
socket.request.max.bytes=104857600 #这个参数是向kafka请求消息或者向kafka发送消息的请请求的最大数,这个值不能超过java的堆栈大小
num.partitions=1 #默认的分区数,一个topic默认1个分区数
log.retention.hours=168 #默认消息的最大持久化时间,168小时,7天
message.max.byte=5242880  #消息保存的最大值5M
default.replication.factor=2  #kafka保存消息的副本数,如果一个副本失效了,另一个还可以继续提供服务
replica.fetch.max.bytes=5242880  #取消息的最大直接数
log.segment.bytes=1073741824 #这个参数是:因为kafka的消息是以追加的形式落地到文件,当超过这个值的时候,kafka会新起一个文件
log.retention.check.interval.ms=300000 #每隔300000毫秒去检查上面配置的log失效时间(log.retention.hours=168 ),到目录查看是否有过期的消息如果有,删除
log.cleaner.enable=false #是否启用log压缩,一般不用启用,启用的话可以提高性能
zookeeper.connect=a:2181,b:2181,c2181 #设置zookeeper的连接端口
#####

启动

先启动zk,然后启动kafka

./bin/kafka-server-start.sh -daemon ./config/server.properties &

然后集群的验证等步骤参看博文

hive

一、与 Hadoop 类似,Hive 也有 3 种运行模式:

  1. 内嵌模式:

将元数据保存在本地内嵌的 Derby 数据库中,这是使用 Hive 最简单的方式。但是这种方式缺点也比较明显,因为一个内嵌的 Derby 数据库每次只能访问一个数据文件,这也就意味着它不支持多会话连接。
2. 本地模式

这种模式是将元数据保存在本地独立的数据库中(一般是 MySQL),这用就可以支持多会话和多用户连接了。

  1. 远程模式

此模式应用于 Hive 客户端较多的情况。把 MySQL 数据库独立出来,将元数据保存在远端独立的 MySQL 服务中,避免了在每个客户端都安装 MySQL 服务从而造成冗余浪费的情况。

一、下载安装 Hive

http://hive.apache.org/downloads.html

二、配置系统环境变量:

修改 /etc/profile或者~/.bashrc 文件,使用 vim /etc/profile 或者vim ~/.bashrc来修改:
# Hive environment
export HIVE_HOME=/usr/local/hadoop/hive
export PATH=$HIVE_HOME/bin:$HIVE_HOME/conf:$PATH

二、内嵌模式

(1)修改 Hive 配置文件:hive-env.sh和hive-site.xml

hive-env.sh

export HADOOP_HEAPSIZE=1024

# Set HADOOP_HOME to point to a specific hadoop install directory
HADOOP_HOME=/usr/local/hadoop

# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=/usr/local/hadoop/hive/conf

# Folder containing extra ibraries required for hive compilation/execution can be controlled by:
export HIVE_AUX_JARS_PATH=/usr/local/hadoop/hive/lib

hive-site.xml

hive.metastore.warehouse.dir
该参数指定了 Hive 的数据存储目录,默认位置在 HDFS 上面的 /user/hive/warehouse 路径下。

hive.exec.scratchdir
该参数指定了 Hive 的数据临时文件目录,默认位置为 HDFS 上面的 /tmp/hive 路径下。

(2)创建必要目录

前面我们看到 hive-site.xml 文件中有两个重要的路径,切换到 hadoop 用户下查看 HDFS 是否有这些路径:

$ hadoop dfs -ls /
没有发现上面提到的路径,因此我们需要自己新建这些目录,并且给它们赋予用户写(W)权限。
$ hadoop dfs -mkdir /user/hive/warehouse
$ hadoop dfs -mkdir /tmp/hive
$ hadoop dfs -chmod 777 /user/hive/warehouse
$ hadoop dfs -chmod 777 /tmp/hive

(3)修改 io.tmpdir 路径

同时,要修改 hive-site.xml 中所有包含 ${system:java.io.tmpdir} 字段的 value 即路径,你可以自己新建一个目录来替换它,例如 /home/hive/iotmp .

mkdir /home/hadoop/cloud/apache-hive-2.1.1-bin/iotmp  
chmod 777 /home/hadoop/cloud/apache-hive-2.1.1-bin/iotmp  

最后再将


    hive.exec.local.scratchdir
    /home/lch/software/Hive/apache-hive-2.1.1-bin/tmp/${system:user.name}
    Local scratch space for Hive jobs
  

中的${system:user.name}修改如下:


    hive.exec.local.scratchdir
    /home/lch/software/Hive/apache-hive-2.1.1-bin/tmp/${user.name}
    Local scratch space for Hive jobs
  

(4) 初始化

./schematool -initSchema -dbType derby
 nohup ./hive --service metastore &
 nohup ./hive --service hiveserver2 &

运行 Hive

./hive

前面我们已经提到过,内嵌模式使用默认配置和 Derby 数据库,所以无需其它特别修改,先 ./start-all.sh 启动 Hadoop, 然后直接运行 hive:

四、Thrift 服务

通过hiveServer/hiveServer2启动Thrift服务,客户端连接Thrift服务访问Hive数据库(JDBC,JAVA等连接Thrift服务访问Hive)。


    hive.server2.thrift.port
    
    Port number of HiveServer2 Thrift interface when hive.server2.transport.mode is 'binary'.
  

  
    hive.server2.thrift.bind.host
    127.0.0.1
    Bind host on which to run the HiveServer2 Thrift service.
  

  
    hive.server2.enable.doAs
    false
    
      Setting this property to true will have HiveServer2 execute
      Hive operations as the user making the calls to it.
    如果为True:Hive Server会以提交用户的身份去执行语句
    如果为False:会以hive server daemon的admin user来执行语句

    
  

启动Thrift服务:hive --service hiveserver2

测试Thrift服务:

新开一个命令行窗口,执行beeline命令:

./beeline
1 若是内嵌模式则:
    If hive.server2.authentication is "NONE" in HIVE_HOME/conf/hive-site.xml then connect beeline with below url
    Connection URL:
               !connect jdbc:hive2://
2  Remote Mode: 
    i.)SASL Authentication:

        If value of "hive.server2.authentication"      property in HIVE_HOME/conf/hive-site.xml to be      set as "SASL" then connect hive beeline with    below url
        
        Beeline URL:
                  !connect      jdbc:hive2://:/
        
    ii.)NOSASL Authentication:
        If "hive.server2.authentication" is nosasl      then connect the beeline like below.
        Beeline URL:
        
                  !connect      jdbc:hive2://:/;auth     =noSasl

三、本地模式 (选用mySql作为元数据库,将mySql和Hive安装在master服务器上)

  • 首先用root用户安装mysql:
yum install mysql-server 

安装完成后:

service mysqld start 
mysql
若不报错则执行下命令:
use mysql; 
update user set password=PASSWORD(“hadoop”)where user=”root”; 
flush privileges; 
quit 
service mysqld restart 
mysql -u root -p 
password:hadoop

到此测表示mysql已经安装成功。
接下来创建用户:

创建Hive元数据库: 
mysql>create database hive;
alter database hive character set latin1;

mysql>grant all privileges on hive.* to 'hive'@'%' identified by 'hive';





mysql>flush privileges; 

二、安装hive

hive安装的前提是hadoop已经安装完毕。且需要在hdfs上新建/user/hive/metahouse/和/tmp/hive文件夹,并赋予777权限:

hdfs dfs -mkdir /user/hive/metahouse(只能一级一级的建)
hdfs dfs -mkdir /tmp/hive
hdfs dfs -chmod 777 /user/hive/warehouse
hdfs dfs -chmod 777 /tmp/hive  
hive.metastore.warehouse.dir
该参数指定了 Hive 的数据存储目录,默认位置在 HDFS 上面的 /user/hive/warehouse 路径下。

hive.exec.scratchdir
该参数指定了 Hive 的数据临时文件目录,默认位置为 HDFS 上面的 /tmp/hive 路径下。
  • 下载hvie:apache-hive-2.2.0-bin.tar.gz
    放入/home/connect/install文件夹中
    然后解压至/home/connect/software
tar -zxvf apache-hive-2.2.0-bin.tar.gz -C /home/connect/software
ln -s apache-hive-2.2.0-bin hive

然后设置环境变量:

vim ~/.bashrc
export HIVE_HOME=/home/connect/software/hive
export PATH=$HIVE_HOME/bin:$HIVE_HOME/conf:$PATH
source ~/.bashrc
  • 修改配置文件:
cp hive-default.xml.template hive-site.xml
cp hive-env.sh.template hive-env.sh

a.修改hive-site.xml


  javax.jdo.option.ConnectionURL
    jdbc:mysql://10.37.167.203:3306/hive_metastore?characterEncoding=UTF-8
    


  javax.jdo.option.ConnectionDriverName
    com.mysql.jdbc.Driver
    


  javax.jdo.option.ConnectionUserName
    root
    


  javax.jdo.option.ConnectionPassword
    hadoop


  • 修改 io.tmpdir 路径
    要修改 hive-site.xml 中所有包含 ${system:java.io.tmpdir} 字段的 value 即路径,可以自己新建一个目录来替换它,例如:
/home/connect/hive/bin/iotmp
chmod 777 /home/connect/hive/bin/iotmp
把hive-site.xml 中所有包含 ${system:Java.io.tmpdir}替换成/home/hadoop/cloud/apache-hive-2.1.1-bin/iotmp
  • 拷贝JDBC驱动包

将mySql的JDBC驱动包复制到Hive的lib目录下

cp mysql-connector-java.bin.jar /home/connect/hive/lib

6、分发Hive分别到slave1,slave2,slave3上

scp -r /usr/local/hadoop/apache-hive-1.2.1-bin slave1:/usr/local/hadoop/ 
scp -r /usr/local/hadoop/apache-hive-1.2.1-bin slave2:/usr/local/hadoop/ 
scp -r /usr/local/hadoop/apache-hive-1.2.1-bin slave3:/usr/local/hadoop/ 

环境变量等如同master

7、测试Hive
进入到Hive的安装目录,命令行:
cd /usr/local/hadoop/apache-hive-1.2.1-bin/bin
hive
hive>show tables;
正常显示,即是安装配置成功。

初始化

schematool -dbType mysql -initSchema

参考及后续有用博文

https://www.cnblogs.com/tq03/p/5107949.html

https://www.cnblogs.com/netuml/p/7841387.html

http://www.cnblogs.com/zlslch/p/6025410.html

https://www.cnblogs.com/yaohaitao/p/6588922.html

spark

参见博文spark安装测试

druid

storm

kafka connect

redis

flume

flume安装使用特别简单,新建用户赋权,然后下载安装包。flume-1.7

  1. 解压至software文件夹;
  2. 修改flume的conf/flume-env.sh中的JAVA_HOME值。
    3.验证是否安装成功:bin/flume-ng version

hive

未完,待续。。。

你可能感兴趣的:(大数据)