Hadoop2.0集群、Hbase集群、Zookeeper集群、Hive工具、Sqoop工具、Flume工具搭建总结
2016-07-15 13:32
681 查看
实验开发环境所用软件:
具体配置如下:
Hive在安装过程中的一些问题详解:
相关图示:mysql安装的图示:
若:
上面的hadoop11表示的是mysql是安装在hadoop11这台服务器上面, zmy表示的是hive的元数据信息存储在mysql中的zmy数据库中。
则hive的元数据信息将在mysql中的zmy数据库中进行存储:
我在实际操作的过程中我在hadoop22和hadoop33服务器上面同时安装了hive,但是用的mysql数据库都是hadoop22上面的数据库,所以:
后来我在黄宜华《深入理解大数据》一书中找到了Hive连接到数据库的三种模式(具体参看书中183页),从书本上可以看到:hive与存储元数据的数据库通常不在同一台服务器上面。
如有问题,欢迎指正留言!
[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---------------------- <property> <name>fs.defaultFS</name> <value>hdfs://hadoop11:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/hadoop/tmp</value> </property> -------hdfs-site.xml---------------------- <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.permissions</name> <value>false</value> </property> -------mapred-site.xml-------------------- <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> -------yarn-site.xml---------------------- <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop22</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> ------------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----------------------------------- <property> <name>hbase.rootdir</name> <value>hdfs://hadoop11:9000/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>hadoop33:2181,hadoop44:2181,hadoop55:2181</value> </property> <property> <name>dfs.replication</name> <value>3</value> </property> ----------------------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进行远程连接 (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的数值一样,两者没有任何 关系 <configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://hadoop11:3306/hive?createDatabaseIfNotExist=true</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>admin</value> </property> <property> <name>hive.metastore.warehouse.dir</name> <value>hdfs://hadoop11:9000/hive</value> </property> </configuration> ----------------------------------------------------------------------------------------------------------- 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安装的图示:
若:
<property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://hadoop11:3306/zmy?createDatabaseIfNotExist=true</value> </property>
上面的hadoop11表示的是mysql是安装在hadoop11这台服务器上面, zmy表示的是hive的元数据信息存储在mysql中的zmy数据库中。
则hive的元数据信息将在mysql中的zmy数据库中进行存储:
我在实际操作的过程中我在hadoop22和hadoop33服务器上面同时安装了hive,但是用的mysql数据库都是hadoop22上面的数据库,所以:
jdbc:mysql:// 后面的主机名必须都是hadoop22
后来我在黄宜华《深入理解大数据》一书中找到了Hive连接到数据库的三种模式(具体参看书中183页),从书本上可以看到:hive与存储元数据的数据库通常不在同一台服务器上面。
如有问题,欢迎指正留言!
相关文章推荐
- OpenWrt内核打补丁方法
- java如何安装tomcat及其底层运用
- CentOS7 上学习使用docker
- 如何通过vSphere客户端打开Linux控制台显示中文
- 了解tomcat
- kali linux 2016.1 滚动更新源
- linux防止攻击
- 跨网站请求伪造
- Linux/CentOS优化配置 汇总
- Linux/CentOS配置:使用yum update更新时不升级内核的方法
- CentOS安装JDK1.7
- Unix Linux vi vim 使用手册|vi vim 常用命令 详解
- Linux下获取软件源码的几种方法
- Linux C利用Socket套接字进行服务器与多个客户端进行通讯
- Linux下安装和操作sql数据库
- 【转】OpenStack和Docker、ServerLess能不能决定云计算胜负吗?
- squid 高匿配置 用户名密码配置
- linux下.run装的软件如何卸载
- samba服务器&nginx配置->windows映射
- Bash退出和退出状态码