Hadoop2.0集群、Hbase集群、Zookeeper集群、Hive工具、Sqoop工具、Flume工具搭建总结

实验开发环境所用软件:

[root@hadoop11 local]# ll
total 320576
-rw-r--r--   1 root root  52550402 Mar  6 10:34 apache-flume-1.6.0-bin.tar.gz
drwxr-xr-x   7 root root      4096 Jul 15 10:46 flume
drwxr-xr-x. 11 root root      4096 Jul 10 21:04 hadoop
-rw-r--r--.  1 root root 124191203 Jul  2 11:44 hadoop-2.4.1-x64.tar.gz
drwxr-xr-x.  7 root root      4096 Jul 14 10:02 hbase
-rw-r--r--.  1 root root  79367504 Jan 21 20:40 hbase-0.96.2-hadoop2-bin.tar.gz
drwxr-xr-x   9 root root      4096 Jul 15 09:09 hive
-rw-r--r--   1 root root  30195232 Dec 12  2015 hive-0.9.0.tar.gz
-rw-r--r--   1 root root   7412135 Jul 14 19:51 MySQL-client-5.1.73-1.glibc23.x86_64.rpm
-rw-r--r--.  1 root root    875336 Jan 21 20:17 mysql-connector-java-5.1.28.jar
-rw-r--r--   1 root root  16775717 Jul 14 19:50 MySQL-server-5.1.73-1.glibc23.x86_64.rpm
drwxr-xr-x   9 root root      4096 Apr 27  2015 sqoop
-rw-r--r--   1 root root  16870735 Jul 15 10:23 sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz

具体配置如下:

Hadoop开发环境集群搭建总结:

(一)hadoop2.4.1集群搭建(非联盟方式):
hadoop2.4.1 64位
集群环境介绍:
hadoop11   NameNode 、SecondaryNameNode
hadoop22   ResourceManager
hadoop33   DataNode、NodeManager
hadoop44   DataNode、NodeManager
hadoop55   DataNode、NodeManager
hadoop66   DataNode、NodeManager 


前期准备:
①>关闭防火墙 
②>设置静态IP地址 
③>修改主机名 
④>IP地址与主机名绑定 
⑤>设置SSH免密码登录 
⑥>安装JDK并配置环境变量 


安装hadoop2.4.1
1>解压缩

2>修改配置文件

-----------hadoop-env.sh------------------
JAVA_HOME=/usr/local/jdk

-------core-site.xml----------------------



    fs.defaultFS
    hdfs://hadoop11:9000


    hadoop.tmp.dir
    /usr/local/hadoop/tmp



-------hdfs-site.xml----------------------

       
   dfs.replication      
   3  
   
      
    dfs.permissions     
    false  
 

-------mapred-site.xml--------------------


  mapreduce.framework.name
  yarn
 


-------yarn-site.xml----------------------


    yarn.resourcemanager.hostname
    hadoop22
   

    yarn.nodemanager.aux-services
    mapreduce_shuffle
 

------------slaves------------------------

hadoop33
hadoop44
hadoop55
hadoop66

------------------------------------------

hdfs namenode -format 格式化

3>启动HDFS与YARN集群
start-dfs.sh
start-yarn.sh

显示进程:
4334 SecondaryNameNode
4781 Jps
4614 NodeManager
4188 DataNode
4074 NameNode
4474 ResourceManager


(二)Zookeeper集群搭建:(QuorumPeerMain)

Zookeeper集群对应服务器:hadoop33、hadoop44、hadoop55

2.1 zk服务器集群规模不小于3个节点,要求各服务器之间系统时间要保持一致。
	2.2 在hadoop33的/usr/local目录下,解压缩zk....tar.gz,设置环境变量
	2.3 在conf目录下,修改文件 vi zoo_sample.cfg  zoo.cfg
	2.4 编辑该文件,执行vi zoo.cfg
		修改dataDir=/usr/local/zk/data
		新增    
              server.0=hadoop33:2888:3888
		      server.1=hadoop44:2888:3888
			  server.2=hadoop55:2888:3888
	2.5 创建文件夹mkdir /usr/local/zk/data
	2.6 在data目录下,创建文件myid,值为0
	2.7 把zk目录复制到hadoop44和hadoop55中
	2.8 把hadoop44中相应的myid的值改为1
	    把hadoop55中相应的myid的值改为2
	2.9 启动,在三个节点上分别执行命令zkServer.sh start
	2.10 检验,在三个节点上分别执行命令zkServer.sh status

检验:
[root@hadoop33 local]# zkServer.sh status
JMX enabled by default
Using config: /usr/local/zk/bin/../conf/zoo.cfg
Mode: follower

[root@hadoop44 data]# zkServer.sh status
JMX enabled by default
Using config: /usr/local/zk/bin/../conf/zoo.cfg
Mode: leader

[root@hadoop55 data]# zkServer.sh status
JMX enabled by default
Using config: /usr/local/zk/bin/../conf/zoo.cfg
Mode: follower


(三)Hbase集群搭建

Hbase集群环境描述:
HMaster           hadoop11、hadoop22(active与standby)
HRegionServer     hadoop33、hadoop44、hadoop55


安装Hbase
1>解压缩

2>修改配置文件(注意最后一条)

-----------------------hbase-env.sh-------------------------------------

export JAVA_HOME=/usr/local/jdk
export HBASE_MANAGES_ZK=false
        
-----------------------hbase-site.xml-----------------------------------


   hbase.rootdir
   hdfs://hadoop11:9000/hbase


   hbase.cluster.distributed
   true


   hbase.zookeeper.quorum
   hadoop33:2181,hadoop44:2181,hadoop55:2181


   dfs.replication
   3


----------------------regionservers-------------------------------------

hadoop33
hadoop44
hadoop55

**********************并没有涉及到Hmaster相关的配置***************



-----------------------因为hbase中的数据在hdfs中存储----------------------

将Hadoop(hdfs)的hdfs-site.xml和core-site.xml 放到hbase/conf下

3、启动hbase
start-hbase.sh
	
******启动hbase之前,确保hadoop是运行正常的,并且可以写入文件*******
******启动hbase之前,确保zk集群已经启动****************************
******Hmaster的位置在配置文件中并没有进行配置,结果就是在哪个节点启动hbase,哪个节点就是Hmaster*******	
******Hbase在启动的时候可以通过hbase-daemon.sh start master启动多个hmaster,多余的是standby状态******


查看启动进程:
------------------------------------------------------------------------

HMaster
HRegionServer

------------------------------------------------------------------------


若使用的是自己的zk实例(true),jps后显示的进程是HQuorumPeer
若使用的不是自己的zk实例(false),jps后显示的进程是QuorumPeerMain 
使用浏览器访问http://hadoop11(Hmaster):60010。


(四)Hive工具的搭建使用(如果不是自带的derby数据库的原因,hive解压缩之后就可以直接使用了,所以使用非常简单)
注:hive本身就是一个客户端工具,没有分布与伪分布搭建之分

1、解压缩、重命名、设置环境变量
-----------------------------------------------------------------------------------------------------
2、安装mysql---直到可以通过Navicate进行远程连接
   参考:https://www.cnblogs.com/wu-chao/p/9066547.html  (必看)
   (1)执行命令  service mysql status  以及  rpm -qa |grep -i mysql 命令检查是否已经安装了mysql
   (2)执行命令  rpm  -e  xxxxxxx   --nodeps 删除已经安装的mysql
   (3)执行命令  service mysql status  以及rpm -qa |grep -i mysql 检查是否删除干净
   (4)执行命令  rpm -i   mysql-server-******** (--nodeps --force) 安装服务端
   (5)执行命令  mysqld_safe   &                 启动mysql 服务端
   (6)执行命令  service mysql status            检查mysql服务端是否启动
   (7)执行命令  rpm -i   mysql-client-********  安装mysql客户端
   (8)执行命令  mysql_secure_installation       设置mysql客户端root登录密码  【3个N  1个Y】 
   (9)执行命令  mysql -uroot -padmin登录到mysql客户端 
   (10)执行命令 grant all on *.* to 'root'@'%' identified by  'admin' ;  {第一个* 本来是hive的}
               flush privileges;  使mysql可以远程连接
   (11)把mysql的jdbc驱动放置到hive的lib目录下  *******!!!!!!!!!!!!!!!
-----------------------------------------------------------------------------------------------------
3、修改配置文件(注意:经过实际操作只需要修改一个hive-site.xml即可,在黄宜华的185页中找到了相同的答案,为了优化起见,可以参考别的参数设置!)
 
   (1)修改hadoop的配置文件hadoop-env.sh,修改内容如下:(hadoop2.0的时候没有配置这一项)
       
        export HADOOP_CLASSPATH=.:$CLASSPATH:$HADOOP_CLASSPATH:$HADOOP_HOME/bin


   (2)在目录$HIVE_HOME/bin下面,修改文件hive-config.sh,增加以下内容:

        export JAVA_HOME=/usr/local/jdk
        export HIVE_HOME=/usr/local/hive
        export HADOOP_HOME=/usr/local/hadoop

   (3)  在目录$HIVE_HOME/conf/下,
      
        将hive-env.sh.template、hive-default.xml.template、hive-log4j.properties重命名

        修改hive_env.sh(1处)
        1、添加HADOOP_HOME的安装目录地址

        修改hive-log4j.properties (1处)
        1、log4j.appender.EventCounter的值修改为org.apache.hadoop.log.metrics.EventCounter
        
        修改配置文件hive-site.xml:(4处)  
        修改该配置文件目的是让mysql作为hive的元数据管理
        hive-site.xml可以直接vi,然后直接复制下面的内容即可:因为别的参数已经有默认值了。
        在哪个主机上安装的mysql就写哪台机器的主机名,而不是写老大namenode的主机名
        mysql://hadoop11:3306/后面随便指定一个数据库就可以,用来存放hive的元数据信息,不一定非要和hive.metastore.warehouse.dir的数值一样,两者没有任何    
        关系

  
    
		javax.jdo.option.ConnectionURL
		jdbc:mysql://hadoop11:3306/hive?createDatabaseIfNotExist=true   
	
	
		javax.jdo.option.ConnectionDriverName
		com.mysql.jdbc.Driver
	
	
		javax.jdo.option.ConnectionUserName
		root
	
	
		javax.jdo.option.ConnectionPassword
		admin
	
         
            hive.metastore.warehouse.dir
            hdfs://hadoop11:9000/hive 
    
  
    
-----------------------------------------------------------------------------------------------------------
4、启动hive工具
   hive
检验:在hive中创建一个表table,然后在mysql的(shell+Navicate中)的TBLS表中看是否可以查到元数据信息


(五)Sqoop工具的搭建使用
sqoop仅仅是一个工具,谈不上分布与伪分布的概念

sqoop安装(非常简单):

1、解压缩
2、重命名
3、配置环境变量
4、source  /etc/profile   
5、将Mysql的驱动放到sqoop的lib的目录下

OK!


(六)Flume工具的搭建使用
Flume的配置没有集群、非集群一说

Flume配置:

1>解压缩
2>重命名
3>修改环境变量,source /etc/profile
4>更改flume-env.sh添加JAVA_HOME
4>****************编写配置文件并添加到conf目录下************


# Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# Describe/configure the source
a1.sources.r1.type = spooldir
a1.sources.r1.spoolDir = /usr/local/datainput
a1.sources.r1.fileHeader = true
a1.sources.r1.interceptors = i1
a1.sources.r1.interceptors.i1.type = timestamp

# Describe the sink
# Describe the sink
a1.sinks.k1.type = hdfs
a1.sinks.k1.hdfs.path = hdfs://hadoop11:9000/dataoutput
a1.sinks.k1.hdfs.writeFormat = Text
a1.sinks.k1.hdfs.fileType = DataStream
a1.sinks.k1.hdfs.rollInterval = 10
a1.sinks.k1.hdfs.rollSize = 0
a1.sinks.k1.hdfs.rollCount = 0
a1.sinks.k1.hdfs.filePrefix = %Y-%m-%d-%H-%M-%S
a1.sinks.k1.hdfs.useLocalTimeStamp = true

# Use a channel which buffers events in file
a1.channels.c1.type = file
a1.channels.c1.checkpointDir = /usr/flume/checkpoint
a1.channels.c1.dataDirs = /usr/flume/data

# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

5>执行命令  bin/flume-ng agent -n agent1 -c conf -f  conf/baby  -Dflume.root.logger=DEBUG,console  即可执行。

Hive在安装过程中的一些问题详解:
相关图示:mysql安装的图示:

Hadoop2.0集群、Hbase集群、Zookeeper集群、Hive工具、Sqoop工具、Flume工具搭建总结_第1张图片
Hadoop2.0集群、Hbase集群、Zookeeper集群、Hive工具、Sqoop工具、Flume工具搭建总结_第2张图片
Hadoop2.0集群、Hbase集群、Zookeeper集群、Hive工具、Sqoop工具、Flume工具搭建总结_第3张图片
若:

 
        javax.jdo.option.ConnectionURL
        jdbc:mysql://hadoop11:3306/zmy?createDatabaseIfNotExist=true   
    

上面的hadoop11表示的是mysql是安装在hadoop11这台服务器上面, zmy表示的是hive的元数据信息存储在mysql中的zmy数据库中。
则hive的元数据信息将在mysql中的zmy数据库中进行存储:
Hadoop2.0集群、Hbase集群、Zookeeper集群、Hive工具、Sqoop工具、Flume工具搭建总结_第4张图片
我在实际操作的过程中我在hadoop22和hadoop33服务器上面同时安装了hive,但是用的mysql数据库都是hadoop22上面的数据库,所以:

jdbc:mysql://   后面的主机名必须都是hadoop22

后来我在黄宜华《深入理解大数据》一书中找到了Hive连接到数据库的三种模式(具体参看书中183页),从书本上可以看到:hive与存储元数据的数据库通常不在同一台服务器上面。
如有问题,欢迎指正留言!

MariaDB搭建信息:

[root@BJLFRZ-Client-50-10 ~]# mysql -uroot -p123456 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 133
Server version: 10.1.17-MariaDB MariaDB Server

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| hive               |
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec)

MariaDB [(none)]> Ctrl-C -- exit!
Aborted
[root@BJLFRZ-Client-50-10 ~]# mysql -uroot -p123456 -h172.21.50.10 -P3306
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 134
Server version: 10.1.17-MariaDB MariaDB Server

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| hive               |
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec)

MariaDB [(none)]> grant all on hive.* to dbs@'%' identified by '123456';
ERROR 1044 (42000): Access denied for user 'root'@'%' to database 'hive'
MariaDB [(none)]> exit()
    -> Ctrl-C -- exit!
Aborted
[root@BJLFRZ-Client-50-10 ~]# mysql -uroot -p123456
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 135
Server version: 10.1.17-MariaDB MariaDB Server

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> grant all on hive.* to dbs@'%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> Ctrl-C -- exit!
Aborted
[root@BJLFRZ-Client-50-10 ~]# mysql -udbs -p123456 -h172.21.50.10 -P3306    
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 136
Server version: 10.1.17-MariaDB MariaDB Server

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| hive               |
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec)

你可能感兴趣的:(Hadoop,Hadoop-Skill)