本文介绍在VMware下建立3台CentOS7系统虚拟机,搭建Hadoop+Spark的全过程。这里三台CentOS主机分别为Mars、Phobos、Deimos。
CentOS最小化安装 CentOS网络设置 防火墙配置 JDK安装 ssh免密登陆 NTP服务搭建 Hadoop搭建 Spark搭建 Scala安装 Spark安装 CentOS最小化安装注:这一part基本没什么难度,简单叙述下就略过。
访问 CentOS官网 ,选择 DVD ISO ,下载CentOS-7-x86_64-DVD-1511.iso。
在VMware中创建虚拟机,安装CentOS7,选择 Minimal ISO 安装。
安装过程中,设置root用户的密码,并新建一个管理员用户 hadoop ,专门用于hadoop+spark操作。
VMware的网络适配器配置为 自定义(U):特定虚拟网络 下的 VMnet8(NAT模式) 。选择这一配置是为了从宿主机通过SecureCRT连到虚拟机。
CentOS网络设置CentOS7最小化安装默认不支持 ifconfig ,网卡也处于关闭状态,因此先修改配置:
[hadoop@Mars ~]$ cd /etc/sysconfig/network_scripts[hadoop@Mars network_scripts]$ ls
可以看到 ifcfg-enoxxxxx 这一网卡配置文件。
[hadoop@Mars network_scripts]$ sudo vi ifcfg-enoxxxxx将 ONBOOT=no 修改为 ONBOOT=yes ,开启网卡。
根据自己的网络情况添加以下配置:
IPADDR=192.168.253.101NETMASK=255.255.255.0
GATEWAY=192.168.253.2
保存退出。
[hadoop@Mars ~]$ sudo service network restart这时虚拟机可以连接网络了,如果想使用 ifconfig ,可以
[hadoop@Mars ~]$ sudo yum install net-tools...
[hadoop@Mars ~]$ ifconfig -a 修改hosts文件 [hadoop@Mars ~]$ sudo vi /etc/hosts
在最前面添加:
192.168.253.101 Mars192.168.253.102 Phobos
192.168.253.103 Deimos
...
保存退出。
[hadoop@Mars ~]$ sudo service network restart 防火墙配置这里对防火墙的配置如下。如果只是实验学习,非搭建业务生产环境,可忽略此part。
关闭firewall [hadoop@Mars ~]$ systemctl stop firewalld.service #停止firewall[hadoop@Mars ~]$ systemctl disable firewalld.service #禁止开机启动firewall 安装iptables [hadoop@Mars ~]$ sudo yum install iptables-servicec #安装
[hadoop@Mars ~]$ vi /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
:wq! #保存退出
[hadoop@Mars ~]$ systemctl restart iptables.service #启动服务
[hadoop@Mars ~]$ systemctl enable iptables.service #开机启动 JDK安装
下载 jdk-7u79-linux-x64.tar.gz 通过宿主机的SecureCRT连接192.168.253.101, Connect SFTP Session 传输到虚拟机目录,并解压到/usr/lib/jvm目录下:
[hadoop@Mars ~]$ tar -zvxf jdk-7u79-linux-x64.tar.gz -C /usr/lib/jvm 配置环境变量 [hadoop@Mars ~]$ sudo vi /etc/profile在文件最下方添加:
export JAVA_HOME=/usr/lib/jvm/jdk1.7export JRE_HOME=/usr/lib/jvm/jdk1.7/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH
保存退出,然后执行:
[hadoop@Mars ~]$ source /etc/profile验证:
[hadoop@Mars ~]$ java -versionjava version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode) ssh免密登陆
在每台主机上都执行以下命令:
[hadoop@Mars ~]$ ssh -genkey -t rsa三次回车后在 ~/.ssh 目录下生成了公钥和私钥:
私钥: id_rsa
公钥: id_rsa.pub
然后在各主机的.ssh目录下建立认证文件:
[hadoop@Mars ~]$ touch authorized_keys将各个主机的 id_rsa.pub 文件的内容全部粘贴到 authorized_keys
修改权限:
[hadoop@Mars ~]$ sudo chmod 700 ~/.ssh[hadoop@Mars ~]$ sudo chmod 600 ~/.ssh/authorized_keys
注意 .ssh 目录及子文件都属于 hadoop:haoop 用户
NTP服务搭建各台服务器上安装NTP服务。NTP服务用于使集群中各个节点的时间保持同步,建议搭建该服务,如果只是学习实验,可暂时忽略此part。
[hadoop@Mars ~]$ sudo yum -y install ntp这里将Mars设为NTP服务器,Phobos和Deimos作为NTP客户端。在Mars上配置:
[hadoop@Mars ~]$ vi /etc/ntp.conf...
restrict 127.0.0.1
restrict ::1
restrict 192.168.253.0 mask 255.255.255.128 nomodify #添加允许192.168.253.0/24网段访问,不可修改服务器参数
...
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
fudge Mars stratum 3 #若上级时间服务器失效,本地对外发布时间
...
“restrict”参数
kod : 使用kod技术防范“kiss of death”攻击
ignore : 拒绝任何NTP连接
nomodify : 用户端不能使用ntpc,ntpq修改时间服务器参数,但是可以进行网络校时
noquery : 用户端不能使用ntpc,ntpq查询时间服务器参数,不可以进行网络校时
notrap : 不提供远程日志功能
notrust : 拒绝没有认证的客户端
“server”参数
prefer : 设置优先上级服务器
在Mars上启动NTP服务:
[hadoop@Mars ~]$ service ntpd start在Phobos和Deimos上设置:
[hadoop@Phobos ~]$ sudo ntpdate Mars [hadoop@Deimos ~]$ sudo ntpdate Mars即可与Mars同步时间。若要定时进行同步,需要配置:
[hadoop@Mars ~]$ sudo vi /etc/crontab30 8 * * * root /usr/sbin/ntpdate Mars; /sbin/hwclock -w #每天8:30分校时
:wq!
[hadoop@Mars ~]$ sudo service crond restart --------------------------------------分割线 --------------------------------------
下面关于 Hadoop 的文章您也可能喜欢,不妨看看:
Ubuntu14.04下Hadoop2.4.1单机/伪分布式安装配置教程 http://www.linuxidc.com/Linux/2015-02/113487.htm
CentOS安装和配置Hadoop2.2.0 http://www.linuxidc.com/Linux/2014-01/94685.htm
CentOS 6.3下Hadoop伪分布式平台搭建 http://www.linuxidc.com/Linux/2016-11/136789.htm
Ubuntu 14.04 LTS下安装Hadoop 1.2.1(伪分布模式) http://www.linuxidc.com/Linux/2016-09/135406.htm
Ubuntu上搭建Hadoop环境(单机模式+伪分布模式) http://www.linuxidc.com/Linux/2013-01/77681.htm