美文网首页
手工部署Hadoop与Spark

手工部署Hadoop与Spark

作者: dingtom | 来源:发表于2020-11-19 12:13 被阅读0次

Hadoop与Spark之间区别联系类似WPS与Word,即Hadoop与Spark功能相同,一个性能较高、另一个性能较普通而已。



可按如下步骤手工部署:

一、制定部署规划。


以下均可:一是云创云端容器云;二是四台实体机;三是在一台高配物理机上使用VMware虚拟出四台虚拟机;四是在一台中配置机上使用Docker虚拟出四台虚拟机。

二、准备机器。

1.修改机器名
  • su - root
    切换成root用户修改机器名
  • hostnamectl set-hostname slave1
    编辑存储机器名文件(CentOS7.x版本命令)
  • vim /etc/sysconfig/network
    编辑存储机器名文件(CentOS6.x版本命令)
    “HOSTNAME=localhost.localdomain”“localhost.localdomain”替换成slave1
    注意一是重启机器后更名操作才会生效,二是必须以root权限执行(即要么以allen用户登录切换成root,要么直接root用户登录)。
2.关闭防火墙

默认情况下CentOS防火墙iptables会阻断进程间(不同机器)通信,用户可永久关闭防火墙或设置防火墙开放Hadoop相关端口,为简单起见,使用永久关闭命令。

  • systemctl disable firewalld
    永久关闭iptables,重启后生效(CentOS7.x版本命令)
    chkconfig –level 35 iptables off
    永久关闭iptables,重启后生效(CentOS6.x版本命令)
    注意一是重启机器后防火墙才会真的关闭,二是必须以root权限执行。
3.安装JDK

Hadoop运行时需1.7及以上的Oracle版JDK环境支撑,选用当前最稳定版“jdk-8u161-linux-x64.rpm”,请读者自行下载并拷贝至CentOS的某目录,如以下假定jdk安装文件位于CentOS机的“/root/tools/jdk-8u161-linux-x64.rpm”。

  • java -version
    查看java是否安装
  • rpm -ivh /root/tools/jdk-8u161-linux-x64.rpm
    以root权限,rpm方式安装
  • java -version
    验证java是否安装成功
    安装后无需重启立刻生效,不过必须以root权限执行。
4.添加域名映射
  • ifconfig
    查看slave1机器IP地址
    首先使用上述命令查看本机当前IP。假如命令输出该机IP地址为“192.168.1.100”,又知该机主机名为slave1,则域名映射应为:192.168.1.100 slave1
  • 接着编辑域名映射文件“/etc/hosts”,将上述内容追加到文件末尾,注意是追加,切不可删除原有内容。
    vim /etc/hosts
    编辑域名映射文件
    注意一是无需重启立刻生效,二是必须root权限执行,三是追加,不可删除原内容。
5.关闭桌面

systemctl set-default multi-user.target
关闭桌面
注意一是非必须(仅为节省内存),二是必须root权限执行,三是通过“startx”命令可从命令行进入桌面。

6.重启生效

reboot
不管三七二一,重启生效一切操作
重启好机器后,可通过如下命令逐一收获结果:
hostname
查看本机主机名,结果应为slave1
systemctl status firewalld
查看防火墙状态,结果应有incative字样
java -version
查看jdk版本,结果应有1.8.0_161
ping slave1
查看域名映射,结果应可以ping的通

三、配置集群环境。

指的是对集群中的每台机器,设置其相应的“主机名”、“关闭每台机器的防火墙”、“为每台机器安装JDK”、“为每台机器添加整个集群的域名映射”。显然,除“为每台机器添加整个集群的域名映射”外,其余三项设置实质上就是前面的任务,即对新创建的五台CentOS机器,逐一执行。

1.为每台机器添加整个集群的域名映射
  • 依次在集群各(此处为五台)机器上执行如下命令查看IP地址,并同时记录每台机器主机名。
    ifconfig
    查看master、slave机器IP地址
    按如下格式汇总各机IP与主机名(假定如下即为这五台机器对应的IP地址):
192.168.1.100  master 
192.168.1.101  slave1 
192.168.1.102  slave2 
192.168.1.102  slave3
192.168.1.102  slave4
  • 将上述(全部)内容追到到每台机器的“/etc/hosts”文件里。
    vim /etc/hosts

编辑master、 slave的域名映射文件

注意一是无需重启立刻生效;二是必须root权限执行;三是追加,不可删除原内容;四是集群中每台机器都要添加。

  • 完成上述操作后,即完成“集群四项设置”。其中前三项设置各机可自行验证,验证方法同实验三;第四项“为每台机器添加整个集群的域名映射”验证方法需小改如下:
    ping master
    在slave2上ping机器master、slave1、slave2、slave3、slave4
    以上以slave2机为例,若slave2可ping通集群内所有(包括自身)机器,则slave2机“添加整个集群的域名映射”设置成功。若集群内所有机均可ping通自身及其它机器,则“为每台机器添加整个集群的域名映射”设置成功
2.配置SSH免密登录

Hadoop的基础是分布式文件系统HDFS,HDFS集群有两类节点以管理者-工作者的模式运行,即一个namenode(管理者)和多个datanode(工作者)。在Hadoop启动以后,namenode通过SSH来启动和停止各个节点上的各种守护进程,这就需要在这些节点之间执行指令时采用无需输入密码的认证方式,因此,我们需要将SSH配置成使用无需输入root密码的密钥文件认证方式。

  • ssh-keygen
    root用户,master机,生成公私钥,生成master服务器密钥。

  • ssh-copy-id master
    将master服务器公钥拷贝至master服务器本身。

  • 公钥拷贝完成后,可以在master服务器上直接执行命令ssh master
    查看是否可以免密登录master服务器:
    ssh master
    root用户,登录本机网络地址
    exit
    退出本次登录
    ssh-copy-id slave1
    将master服务器公钥拷贝至slave1服务器。

  • 公钥拷贝完成后,可以在master服务器上直接执行命令ssh master
    查看是否可以免密登录slave1~2服务器:
    ssh localhost
    root用户,登录本机环回地址
    ssh slave1
    root用户,从master远程登录slave1、2

  • 其余服务器按照同样的方式配置ssh免密登录,完成后验证是否可以互相之间实现SSH免密登录。

编译、运行或者打包Java程序。

使用vi编辑器编写HelloWorld.java:

public class HelloWorld {
    public static void main(String args[]) {
        System.out.println("Hello World!");
    }
}
  • 编译Java程序
    javac HelloWorld.java
    使用javac命令编译该程序,生成HelloWorld.class文件
  • 运行Java程序
    java HelloWorld
    使用java命令执行该程序,输出Hello World!
  • 打包Java程序
    jar -cvf HelloWorld.jar HelloWorld.class
    由于打包时并没有指定manifest文件,因此该jar包无法直接运行:
    java -jar HelloWorld.jar
  • 如果出错,修改META-INF文件
    (a)jar xvf HelloWorld.jar
    解压jar包 生成META-INF文件夹,
    (b)vim MANIFEST.MF
    在第3行加上 Main-Class: HelloWorld
  • 打包携带manifest文件的Java程序
    打包时,加入-m参数,并指定manifest文件名:
    jar -cvfm HelloWorld.jar META-INF/MANIFEST.MF HelloWorld.class
    之后,即可使用java命令直接运行该jar包:
    java -jar HelloWorld.jar

四、下载组件。

下载Hadoop。请至http://archive.apache.org/dist/主页下载hadoop-2.7.4.tar.gz并以root用户拷贝至各机“/root/tools/hadoop-2.7.4.tar.gz”。。

五、部署前置组件。


所谓的“部署前置组件”指的是部署本组件的依赖组件,如部署Hive前需提前部署Hadoop;部署Spark前需提前部署HDFS(当指定Spark使用HDFS时)。

六、部署组件。

解压Hadoop(五台机器均需解压Hadoop);配置HDFS(五台均配置 hadoop-env.sh ,core-site.xml);格式化主节点(仅安装时主节点执行一次,其它情况均不执行)。

  • 解压Hadoop
    以root用户登录各机,在root的默认HOME目录(即/root)下解压Hadoop。
    tar -zxvf /root/tools/hadoop-2.7.4.tar.gz
    master、slave上root用户解压Hadoop
  • 配置HDFS
    配置hadoop-env.sh,编辑文件
    vim /root/hadoop-2.7.4/etc/hadoop/hadoop-env.sh
    找到如下一行:
    export JAVA_HOME=${JAVA_HOME}
    将这行内容修改为:
    export JAVA_HOME=/usr/java/jdk1.8.0_161
    这里的“/usr/java/jdk1.8.0_161”即为JDK安装位置,如有不同,请读者务必根据实际情况更改。
    注意一是以root用户登录;二是五台机器均需执行;三是务必根据实际填写正确的JDK目录。
  • 配置core-site.xml
    编辑各机文件
    vim /root/hadoop-2.7.4/etc/hadoop/core-site.xml
    将如下内容嵌入此文件的configuration标签间(即<configuration>与</configuration>间)。
<property><name>hadoop.tmp.dir</name><value>/root/hadoopdata</value></property>
<property><name>fs.defaultFS</name><value>hdfs://master:8020</value></property>

注意一是以root用户登录;二是五台机器均需执行;三是仅在<configuration>与</configuration>间添加上述内容,切不可删除configuration外原有内容。

  • 格式化主节点
    在master机上,执行下述命令,完成格式化HDFS主服务元数据存储区操作:
    /root/hadoop-2.7.4/bin/hdfs namenode -format
    格式化主节点命名空间
    注意一是以root用户操作;二是仅master机执行;三是仅安装时主节点执行一次,其它情况均不执行。

七、启动HDFS

总原则为“主节点启动主服务、从节点启动从服务”

实际操作命令见如下两步骤。

  • 在master机上使用下述命令启动HDFS主服务namenode:
    /root/hadoop-2.7.4/sbin/hadoop-daemon.sh start namenode
    master启动主服务
  • 在slave1、slave2、slave3、slave4上使用下述命令启动HDFS从服务datanode
    /root/hadoop-2.7.4/sbin/hadoop-daemon.sh start datanode
    slave1、2、3启动从服务
    注意一是以root用户操作;二是master机仅启动namenode;三是所有slave都需启动datanode;四是使用的脚本名为“hadoop-daemon.sh”,而不是“hadoop-daemons.sh” 。

统一启动

  • 修改slave文件
    vim /root/hadoop-2.7.4/etc/hadoop/slaves
    添加slave1、slave2,Localhost不删,把master也作为slave
  • 统一启动命令
    /root/hadoop-2.7.4/sbin/start-dfs.sh

八、测试HDFS

  • 方法一 Web页面测试
    任选集群内某机,打开该机默认浏览器Firefox并输入如下地址,即可进入HDFS的Web统计界面。
    http://master:50070
    HDFS web页面网址
    若读者是在“您的终端电脑”上打开该网址,显然“您的终端电脑”必须能将主机名master映射成该机IP。此时请读者务必根据实际情况修改如下内容并将其追加到“您的终端电脑”的“C:\Windows\system32\drivers\etc\hosts”文件里,注意是追加不是覆盖。
192.168.1.100  master
192.168.1.101  slave1
  • 方法二 JPS进程测试
    请在五台机器上分别执行下述命令(两命令功能相同,择一即可),查看HDFS进程:
    /usr/java/jdk1.8.0_161/bin/jps
    jps命令查看java进程
    ps –ef | grep java
    ps命令查看java进程
    master机可看到类似如下信息(进程号,进程名):
2347 NameNode                                       #分布式存储HDFS集群主服务
slave1、slave2、slave3、slave4机可看到类似如下信息(进程号,进程名):
4021 DataNode                                        #分布式存储HDFS集群从服务

no datanode to stop

  • 方法三 上传文件测试
    显然,最稳妥的测试方式是将某文件“放”入HDFS集群,已确定该集群可存储文件,如下步骤即实现该测试:
    Step1 确定HDFS集群当前无文件
    浏览器依次进入http://master:50070 >“左上角”>“Brose the file system”,显然,当前HDFS集群无任何文件与文件夹。
    Step2 使用如下命令在HDFS里新建“/in”目录
    /root/hadoop-2.7.4/bin/hdfs dfs -mkdir /in
    在HDFS存储区新建in目录
    请注意该命令虽在master机shell环境下执行,但其不是在master机根目录下新建的文件夹“in”,而是在HDFS存储区的根目录下新建的“in”目录。命令执行后,请读者再次执行Step1,从HDFS Web页面查看HDFS存储区是否出现“in”目录。
    Step3 上传文件至HDFS里的“/in”目录
    /root/hadoop-2.7.4/bin/hdfs dfs -put / root/hadoop-2.7.4/etc/hadoop/* /in
    上述命令将master机本地文件夹“/root/hadoop-2.7.4/etc/hadoop/”下所有文件拷贝至HDFS集群的“/in”目录下。命令执行后,请读者按照Step1定位到HDFS Web页面“in”目录下,查看文件。

九、关闭该HDFS集群

总原则为“主节点关闭主服务、从节点关闭从服务”,实际操作命令参见如下两步骤。此外,本步骤最简单的验证方法为关闭前浏览器可打开“http://master:50070”,关闭后浏览器打不开“http://master:50070”。

  • 在master机上使用下述命令关闭HDFS主服务namenode:
    /root/hadoop-2.7.4/sbin/hadoop-daemon.sh stop namenode
    master关闭主服务
  • 在slave1、slave2、slave3、slave4上使用下述命令关闭HDFS从服务datanode
    /root/hadoop-2.7.4/sbin/hadoop-daemon.sh stop datanode
    slave1、2、3关闭从服务
    注意一是以root用户操作;二是master机仅关闭namenode;三是所有slave都需关闭datanode;四是使用的脚本名为“hadoop-daemon.sh”,而不是“hadoop-daemons.sh” 。

相关文章

网友评论

      本文标题:手工部署Hadoop与Spark

      本文链接:https://www.haomeiwen.com/subject/lgchiktx.html