你好,游客 登录 注册 搜索
背景:
阅读新闻

CentOS7+Hadoop2.5.2+Spark1.5.2环境搭建

[日期:2017-01-08] 来源:Linux社区  作者:starrrr2 [字体: ]

本文介绍在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.101
NETMASK=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 Mars
192.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.7
export 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 -version
java 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/crontab
30 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

实战CentOS系统部署Hadoop集群服务 http://www.linuxidc.com/Linux/2016-11/137246.htm

单机版搭建Hadoop环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

Hadoop 2.6.0 HA高可用集群配置详解  http://www.linuxidc.com/Linux/2016-08/134180.htm

Spark 1.5、Hadoop 2.7 集群环境搭建  http://www.linuxidc.com/Linux/2016-09/135067.htm

--------------------------------------分割线 --------------------------------------

Hadoop搭建

Hadoop官网下载Hadoop安装包,解压至/opt/hadoop目录(一般情况下,程序安装在/usr/local目录下,数据放在/home/{user}目录下,但是这里将程序和数据都放在了/opt/hadoop下)。

[hadoop@Mars ~]$ cd /opt/hadoop/etc/hadoop
[hadoop@Mars hadoop]$ sudo vi core-site.xml
<configuration>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/opt/hadoop/tmp</value>
        </property>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://Mars:9000</value>
        </property>
        <property>
                <name>io.file.buffer.size</name>
                <value>4096</value>
        </property>
</configuration>
:wq!

 

[hadoop@Mars hadoop]$ sudo vi hdfs-site.xml
<configuration>
        <property>
                <name>dfs.nameservices</name>
                <value>Mars</value>
        </property>
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>Phobos:50090</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:///opt/hadoop/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:///opt/hadoop/dfs/data</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>2</value>
        </property>
        <property>
                <name>dfs.webhdfs.enabled</name>
                <value>true</value>
        </property>
</configuration>
:wq!

 

[hadoop@Mars hadoop]$ sudo vi mapre-site.xml
<configuration>
        <property>   
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>   
        <property>
                <name>mapreduce.jobtracker.http.address</name>
                <value>Mars:50030</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>Mars:10020</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>Mars:19888 </value>
        </property>
</configuration>
:wq!
[hadoop@Mars hadoop]$ sudo vi hadoop-env.sh
...
export JAVA_HOME=/usr/lib/jvm/jdk1.7
...
export HADOOP_LOG_DIR=/opt/hadoop/log
...
:wq!
[hadoop@Mars hadoop]$ sudo vi yarn-env.sh
export JAVA_HOME=/usr/lib/jvm/jdk1.7
:wq!
[hadoop@Mars hadoop]$ sudo vi slaves
Phobos
Deimos
:wq!

将/opt/hadoop目录拷贝到Phobos和Deimos的相同位置:

[haoop@Mars ~]$src -r /opt/hadoop hadoop@Phobos:/opt/hadoop
[haoop@Mars ~]$src -r /opt/hadoop hadoop@Deimos:/opt/hadoop

保证该目录下的文件都属于hadoop:hadoop用户。

格式化并启动HDFS:

[hadoop@Mars ~]$ /opt/hadoop/bin/hdfs namenode -format
[hadoop@Mars ~]$ cd /opt/hadoop/sbin
[hadoop@Mars sbin]$ ./start-dfs.sh

此时查看Mars:

[hadoop@Mars ~]$ jps
6718 NameNode
7461 Jps

查看Phobos:

[hadoop@Phobos ~]$ jps
6128 DataNode
6342 Jps

查看Deimos:

[hadoop@Deimos ~]$ jps
5682 DataNode
5886 Jps

启动Yarn:

[hadoop@Mars ~]$ cd /opt/hadoop/sbin
[hadoop@Mars sbin]$ ./start-yarn.sh

此时查看Mars:

[hadoop@Mars ~]$ jps
8128 ResourceManager
7461 Jps
6718 NameNode

查看Phobos:

[hadoop@Phobos ~]$ jps
6228 NodeManager
6128 DataNode
6342 Jps

查看Deimos:

[hadoop@Deimos ~]$ jps
5782 NodeManager
5682 DataNode
5886 Jps

访问
http://Mars:50070/
http://Mars:8088/
Hadoop成功运行。

更多详情见请继续阅读下一页的精彩内容http://www.linuxidc.com/Linux/2017-01/139364p2.htm

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款