针对分布式hadoop集群搭建,已经在四台虚拟机上,完全搭建好,这里针对整个搭建过程以及遇到的问题做个总结,按照下面的做法应该能够比较顺畅的搭建一套高可用的分布式hadoop集群。
这一系列分布式组件的安装过程中,大体可以分为以下几步:
第一步.配置机器互信
机器互信配置原理:机器互信是指一个机器可以不需要输入密码的情况下直接登录到另外一台机器,使用证书信任的方式。ftp,telnet等连接方式的弊端是采用明文传输,中间者可以冒充真正的服务器来截取这部分传输数据,从而带来安全问题。ssh是secure shell的简写 两种登录方式 一种是口令登录,输入用户名和密码,另外一种是秘钥验证,自己为自己创建一对秘钥,然后把公钥放在服务器上,如果连接服务器的时候,客户端首先发送请求,里面包含公钥,请求服务器验证,服务器接收到请求后,与自己机器上保存的所有公钥中进行对比验证,如果相同,服务器就把质询信息加密发送给客户端,客户端收到后,用自己的私钥解密,然后把解密结果发给服务器进行验证,验证通过则可以通信。
其实就是三次握手的一来一回,A跟B发公钥 B给A发密文 A解密发个B解密后的东西 可以连接
知道了原理以后,下面来配置机器互信,机器配置互信有下面几个步骤
第一步:创建hadoop用户
sudo addgroup hadoop
sudo adduser --ingroup hadoop hadoop第一行是建立了hadoop组,第二行是添加了hadoop用户,而且该用户是属于hadoop组的
这些可以在当前用户下执行 sudo su - hadoop 来切换到hadoop用户下 中间的小短线- 不要忘记写,表示将环境变量等信息加载到新用户下,可以避免很多不必要的麻烦。但是在hadoop用户 没办法使用sudo 还需要修改一个文件。当使用sudo时,会提示如下错误:
hadoop is not in the sudoers file. This incident will be reported.
此时,需要修改/etc/sudoers文件 默认这个文件是不可写的
首先切换到root用户
sudo su -然后修改文件属性
chmod u+w /etc/sudoers给u(user)添加了w(write)权限,测试在root用户下,可以编辑该文件了
添加如下行:
hadoop ALL=(ALL:ALL) ALL
chmod u-w /etc/sudoers切回到hadoop用户下 发现可以使用sudo命令了。
第二步:修改机器名字 比如我的ubuntu虚拟机默认登录上去是verlink@ubuntu,可以选择hadoop用户登录,或者是切换到hadoop用户下,sudo su - hadoop,
修改机器主机名
sudo vim /etc/hostname打开文件后将主机名删除掉 然后换成 hadoop01-namenode 标识这台机器作为hadoop的namenode节点 然后保存退出。此时还需要做映射操作,集群中所有用到的主机名都要做映射 这样才能正常使用ssh hadoop03-datanode 这种命令来登录 否则只能是使用ip地址,下面来说如何做映射。
sudo vim /etc/hosts在下面追加需要增加的映射地址即可,比如
hadoop01-namenode 192.168.79.183保存退出即可。
第三步,生成信任证书,也是真正配置互信的地方
ssh-keygen -t rsa然后一直回车,证书已经生成
cd ~/.ssh cat id_rsa.pub你会看到公钥内容,创建一个公钥认证的文件
touch authorized_keys chmod 600 authorized_keys
将id_rsa.pub文件内的东西复制到authorized_keys文件中,退出保存,所有机器的互信配置都需要执行上面的操作,而且公钥文件都需要添加到authorized_keys文件里面,也就是说如果A,C想跟B连接 那么A和C的公钥要写入B的authorized_keys里,以追加的形式即可。此时就算完成了互信配置。验证机器是否安装了ssh,如果提示错误
ssh: connect to host localhost port 22: Connection refused
说明ssh服务没安装,可以使用ubuntu的安装包来安装,如下所示
sudo apt-get install openssh-server此时再次执行,ssh hadoop01-namenode 提示输入连接yes后 可以不用输密码登录到自己机器上了,说明互信配置成功。
到此,互信就算是配置完了。
第二步。配置hadoop,以HA的方式配置
此处不得不说,hadoop的搭建精髓就是编写配置文件。
参考文章:
http://www.open-open.com/lib/view/open1436855630959.html
1.hive中的元数据是依托MysqL来进行管理的,在hive-site.xml中需要配置出MysqL的地址信息。以及连接MysqL所使用的用户名以及密码,同时还需要将MysqL的连接驱动jar包包含到系统的classpath中去。
2.对MysqL的授权操作,允许其他ip地址的机器可以对该MysqL进行访问 此处查询下授权命令 grant 一次性搞懂
原文链接:https://www.f2er.com/ubuntu/356026.html