01、服务器环境
云主机,CentOS版本版本3.10.0-1160.31.1.el7.x86_64
02、集群规划
集群规划 | hadoop102 | hadoop103 | hadoop104 |
---|
内(私)网IP | | | | 外(公)网IP | | | |
03、hostname
hostnamectl --static set-hostname hadoop102
hostnamectl --static set-hostname hadoop103
hostnamectl --static set-hostname hadoop104
04、hosts
vim /etc/hosts
添加内网IP映射
内网IP hadoop102 hadoop102
内网IP hadoop103 hadoop103
内网IP hadoop104 hadoop104
05、WIN10网络映射配置
去到C:\Windows\System32\drivers\etc 以管理员身份编辑hosts 文件,添加外网IP映射
外网IP hadoop102
外网IP hadoop103
外网IP hadoop104
06、关闭防火墙
保存当前防火墙规则
iptables-save > ~/firewall.rules
禁用防火墙
systemctl disable firewalld
停止防火墙
systemctl stop firewalld
查看防火墙状态
systemctl status firewalld
07、集群之间SSH免密登录
每台机执行:生成公钥和密钥
ssh-keygen
每台机执行:把自己的公钥发到所有节点,填yes 和密码
ssh-copy-id -i ~/.ssh/id_rsa.pub root@hadoop102
ssh-copy-id -i ~/.ssh/id_rsa.pub root@hadoop103
ssh-copy-id -i ~/.ssh/id_rsa.pub root@hadoop104
08、Python版本确认
Hue需要用到Python2.7;CentOS7默认装好了Python2.7,用下面命令确认一下
python --version
09、集群分发脚本
mkdir ~/bin
touch ~/bin/rsync.py
chmod 777 ~/bin/rsync.py
vim ~/bin/rsync.py
import os, re, socket
a = os.sys.argv
if len(a) != 2:
print a
exit('使用方法:rsync.py $HADOOP_HOME')
a = a[1]
if not a.startswith('/'):
a = os.path.join(os.getcwd(), a)
if os.path.isdir(a) and not a.endswith('/'):
a += '/'
if not os.path.exists(a):
print a
exit('路径不存在')
hostname = socket.gethostname()
with open('/etc/hosts') as f:
for i in set(re.findall('hadoop[0-9]+', f.read())):
if i == hostname:
continue
aa = 'rsync -a %s %s:%s' % (a, i, a)
print aa
os.system(aa)
分发
rsync.py ~/bin
10、禁用SELinux模式
注:安全增强的Linux(SELinux)允许通过策略设置访问控制。如果在部署CDH时遇到困难,请在将CDH部署到集群之前,在每个主机上将SELinux设置为permissive模式。
检查当前SELinux mode状态
getenforce
如果输出为Disabled 或Permissive ,进入下一步
如果输出结果为enforcing ,则需要额外4步: 1、vim /etc/selinux/config 2、将SELINUX=enforcing 改为SELINUX=permissive 3、保存并关闭文件 4、重新启动系统或运行setenforce 0 命令来立即禁用SELinux
11、禁用透明大页配置
Cloudera公司建议关闭透明大页;如果未关闭,就会在后面的环境检测中报错
每台机执行
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' >> /etc/rc.local
echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local
12、集群操作脚本(可选)
touch ~/bin/cluster.py
chmod 777 ~/bin/cluster.py
vim ~/bin/cluster.py
import os, re
a = os.sys.argv
if len(a) < 2:
print a
exit('Usage: cluster.py python --version')
cmd = ' '.join(a[1:])
with open('/etc/hosts') as f:
for h in sorted(set(re.findall('hadoop[0-9]+', f.read()))):
c = "ssh %s '%s'" % (h, cmd)
print '\033[033m{}\033[0m'.format(c)
os.system(c)
另外,还有在每台机执行:将/etc/profile 文件内容追加到~/.bashrc ,只执行一次
cat /etc/profile >> ~/.bashrc
cat ~/.bashrc
.bashrc 是针对特定用户的环境变量配置
13、集群时间同步
云服务本身已经提供时间服务,我们可用下面命令检查集群时间是否一致
cluster.py date
14、CDH平台权限与命令概览
任务 | 需要的权限 |
---|
安装Cloudera Manager Server | 安装CM Server的主机需要有root或sudo权限 | 使用service或systemctl工具启动、停止或重新启动Cloudera Manager服务器 | Cloudera Manager Server 的主机需要有root或sudo权限;默认情况下服务运行在cloudera-scm用户下 | 使用CM安装CDH组件 | 在Cloudera Manager初始安装时配置的如下之一: 有密码或者ssh秘钥的方式访问root用户的权限 为特定用户提供无密码的sudo访问 对于此任务,不支持使用另一个提供root或sudo访问的系统(例如PowerBroker) | 使用CM安装CM Agent | 在Cloudera Manager初始安装时配置的如下之一: 有密码或者ssh秘钥的方式访问root用户的权限 为特定用户提供无密码的sudo访问 对于此任务,不支持使用另一个提供root或sudo访问的系统(例如PowerBroker) | 自动启动CM Agent进程 | 在运行时访问root帐户,通过以下场景之一: 在Cloudera Manager和CDH安装期间,如果安装成功,代理将自动启动。然后使用以下其中一种启动它,这与Cloudera Manager初始安装期间的配置相同: 有密码或者ssh秘钥的方式访问root用户的权限 为特定用户提供无密码的sudo访问. 对于此任务,不支持使用另一个提供root或sudo访问的系统(例如PowerBroker)。 在系统启动过程中使用init自动启动 | 手动启动、停止或重新启动Cloudera Manager Agent进程 | root或sudo 权限。 该权限要求确保Cloudera Manager代理管理的服务可以作为适当的用户运行(例如hdfs服务的hdfs用户)。在CDH服务的Cloudera Manager中运行命令不需要root或sudo访问,因为操作是由Cloudera Manager Agent处理的,它已经作为root在运行了 |
如果您想为Cloudera Manager用户配置特定的sudo访问(默认情况下是Cloudera -scm),您可以使用以下列表来完成(CM运行的sudo命令有下面这些):
-
yum (RHEL/CentOS/Oracle)
sed
service
/sbin/chkconfig (RHEL/CentOS/Oracle)
id
rm
mv
chown
install
|