之前一直在local mode或伪分布式下学习spark大数据编程,一直没有尝试分布式集群。最近新分了机器,配置不错,想玩一下。

在参考了几篇博客,搜寻了一些资料后,成功地在虚拟机中搭建了1一个master和一个slave的分布式集群,slave的规模可以根据自己机器的配置,继续很方便地扩充,只需要复制已经搭建起来的slave节点即可。想快速体验或者不想折腾的可以给我发邮件我索取虚拟机文件(文件太大,不想上传到云盘了)。

搭建的基本过程在我参考的博客中有比较详细的叙述,我就不重复了,现在主要记录下原博客里不妥之处,自己摸索改进地方,以及自己的踩坑填坑过程。

1.创建虚拟机节点的操作系统我选的ubuntu14.04,一来比较熟悉它,二来它没有防火墙,在通信那块限制少点。创建Master节点时,建议用户名直接是hadoop,主机名为master。虚拟机的网络连接采用原博客里的桥接方式会无法联网(我的网络里还有IPV6),并且也不利于将来在物理节点上部署,所以我采用nat方式,经测试可以联通,效果很好。因为是同一个局域网,且采用了DHCP,节点IP租约到期后会重新分配IP,所以需要在集群运行前查看下节点IP和hosts文件里配置的是否一致。否则会产生 “no route to host”的错误。当然,可以关闭DHCP,这样每次就不需要改了。

2.在master节点上把hadoop环境配置好,如果已经在/etc/profile里设置了JAVA_HOME,但是仍然出现JAVA_HOME NOT found,在Hadoop-env.sh里面设置下JAVA_HOME.

3. 接着在master里把spark环境配好,然后先简单配置下hive,因为目前配置的hive是客户端hive,只需要设置下hive的安装路径,HIVE_HOME即可。,然后在虚拟机里把master导出,进行节点复制创建slave节点,记得修改下slave节点的主机名为slave1。

4.hive服务器是搭建在master上的,其他节点的hive客户端可以远程访问master节点上的hive服务。所以需要在master节点上继续配置hive。

5.master节点的hive服务器采用的mysql来存储metastore,所以需要在master上安装mysql服务,在ubuntu里可以一条命令解决:

sudo apt-get install mysql-server
不需要原博客里自行编译然后手动安装。

6.mysql服务需要开启远程服务,因为会有slave节点远程连接hive,而hive依赖mysql的远程连接。所以要修改/etc/mysql/my.cnf配置文件,去掉bind-address.并且在mysql里创建hive用户,host设置为%(也可以把需要连接mysql服务的主机节点都设置一遍,这样安全些,如果想简单,可以用%来通配)并且授予权限。这样就可以解决111的拒绝连接错误

7.如果遇到mysql的113错误,那就以root用户进入mysql里,修改新建立的hive用户的密码,然后重启mysql。

8.可以用perror errorcode来查看错误的详细说明,这个很好。、

9.启动hive时,如果出现hiveServer:class not found。一般是hive版本的不同,导致启动命令不同。那就尝试下这个命令:bin/hive --service hiveserver2

10. 启动hive时,如果出现Getting MissingTableException: Required table missing VERSION错误,有两种解决方法,一种是在hive的配置文件里配置自动生成(可能不起效),另一种是手动初始化下,命令如下:bin/schematool -dbType mysql -initSchema


参考的博客:http://www.powerxing.com/install-hadoop-cluster/

http://wuchong.me/blog/2015/04/04/spark-on-yarn-cluster-deploy/

http://lxw1234.com/archives/2015/06/294.htm

以上博客写的不错,可以对照着把流程走一遍。

因为是搭建完后事后写的这篇博客,遇到的问题不一定都记录下来了,如果有问题,可以留言交流。 


Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐