zoukankan      html  css  js  c++  java
  • hadoop_spark伪分布式实验环境搭建和运行实例详细教程

    hadoop+spark伪分布式环境搭建

    安装须知

    • 单机模式(standalone):
    • 该模式是Hadoop的默认模式。这种模式在一台单机上运行,没有分布式文件系统,而是直接读写本地操作系统的文件系统。
    • 伪分布模式(Pseudo-Distributed Mode
    • 这种模式也是在一台单机上运行,但用不同的Java进程模仿分布式运行中的各类结点,其中所有的守护进程都运行在同一台机器上。
    • 全分布模式(Fully Distributed Mode
      Hadoop守护进程运行在一个集群上,一台主机也可以运行完全分布式,需要安装多个独立的linux镜像,配置不同IP

    需要的软件及版本

    软件

    版本

    Java编程语言(JDK8)

    1.8.0_161

    操作系统:LinuxCentOS

    6.4

    操作系统:Windows

    Windows7/8/10

    Apache Hadoop

    2.7.5

    Apache Spark

    2.3.0

    Apache Maven

    3.5.2

    LinuxCentOS:Eclipse IDE

    eclipse-jee-luna-SR2-linux-gtk

    Windows下:Eclipse IDE

    eclipse-jee-oxygen-2-win32-x86_64

    安装步骤大纲

    1./软件准备(虚拟一台主机)

    2.安装linux操作系统

    3.准备网络连接

    4.linux系统的一些配置

    5.安装JDK

    6.安装Hadoop

    7.安装Scala+Spark

    8)安装eclipsemaven

    9)运行wordcount例子程序

    1./软件准备

    • 第一步:硬/软件准备(虚拟一台主机)
    • 1)物理主机一台,CPU必须支持虚拟化功能(主流机大部分支持,如果被禁止可以在BIOS设置项里面设置开启),内存最好4G及以上,安装虚拟机的硬盘至少要留出20G空间。
    • 2)上述所有需求版本软件,由于我们的CentOS32位,所以这些软件最好下载32位的linux版本的压缩包
    • 3SecureCRTPortable(远程终端)
    • VMware Workstation Pro(虚拟机)
    • filezillawindowslinux之间文件传输)

    2.安装linux操作系统

    (1)安装VM虚拟机,安装完毕后打开准备好的CentOS镜像(本教程以CentOS6.4为例子,6.x与7.x差别不大)

       (2)   设置虚拟机的内存,处理器,硬盘和网络适配器,本教程设置如下:   内存:2GB

              处理器:处理器数量1,内核数量1(根据个人机器配置适当调整)

              硬盘:20GB

    重点  网络适配器设置:自定义 VMnet8(NAT模式)

    3.准备网络连接

    (1)设置VM虚拟机的”虚拟网卡”的信息

     在VM选项中点击  编辑(Edit)->虚拟网络编辑器(Virtual NetWork Editor)->选择Vmnet8 NAT模式 ,先配置子网IP,再配置子网掩码,最后设置NAT设置 (NAT setting ),配置完点击应用(apply),会在windows下的网络和共享下适配器管理中产生一个VMnet8的虚拟网卡。

    具体配置参考如下:

      Subnet IP:192.168.2.0 (可调整)

      子网掩码:255.255.255.0

     NAT setting->Gateway IP 改为:192.168.2.1(可调整)

    (2)设置物理主机生成的虚拟网卡的信息

    打开网络和共享中心,网络适配器,选择新生成的VMnet8,设置IP地址 192.168.2.2(也可以根据情况调整)

    (3)开启此虚拟机并选择I  have moved it,这样将不会重新生成虚拟网卡,  原来对虚拟机的配置不会浪费

    (也可以根据情况调整,但要保证物理主 机生成的虚拟网卡,虚拟主 机虚拟网卡,CentOS的IP在同一网段中,即都配置为192.168.2.X   

    4.linux系统的一些配置

    (1)登陆虚拟机,初始用户名及密码为hadoop(hadoop)

    (2)查看ip地址,在控制台输入命令ifconfig查看本机的IP

              $ifconfig

    (3)修改ip地址的方式

    第一种:命令行输入 $setup,进入伪图形界面,输入密码hadoop进入并选择NetWork configuration ,然后根据提示进行修改,具体如下

    Static IP :192.168.2.100

    gateWay IP:192.168.2.1

    DNS Server:8.8.8.8

    保存并退出 (推荐使用这种方式,简单不容易出错)                             

    第二种:修改配置文件方式(需要简单linux使用基础,关于vi编辑器操作指令,不太推荐,了解就好)

    输入以下指令并修改IP,:wq保存并退出

    $vim  /etc/sysconfig/network-scripts/ifcfg-eth0

    DEVICE="eth0"

    BOOTPROTO="static"               

    HWADDR="00:0C:29:3C:BF:E7"

    IPV6INIT="yes"

    NM_CONTROLLED="yes"

    ONBOOT="yes"

    TYPE="Ethernet"

    UUID="ce22eeca-ecde-4536-8cc2-ef0dc36d4a8c"

    IPADDR=“192.168.2.100”     (一般只修改这个就可以了)      

    NETMASK="255.255.255.0"          

    GATEWAY="192.168.2.1"            

    4)重启网络设置,使新配置生效

    进入管理员用户重启网络设置,命令如下:

    $su

    输入密码:hadoop       进入root用户,输入以下指令,使新网络配置生效

    $service network restart

    最后用ping命令检测是否连通

    $ping 192.168.2.2

    $ping 192.168.2.1

     $ping www.baidu.com(如果连接到网络就能ping通)

    Ctrl +Z(挂起进程)和Ctrl+C(强制中断)都可终止程序运行

    (5)让普通用户具备sudo执行权限(root用户即管理员用户具有某些配置文件的权限,一般用户没有,需要root用户赋予,或者使用sudo命令)

     切换到root用户,输入$su,然后输入密码,进入root用户,然后输入以下命令   $vi   /etc/sudoers, 在打开的文件里,找到

    ##allow root to run any commands anywhere

    root  ALL=(ALL)   ALL

    在这个地方添加一行:hadoop  ALL=(ALL)   ALL

    然后保存并退出(记得改完退出root用户,不建议在root用户下操作)

    (6)修改系统配置文件,设置启动项,让虚拟机以后默认以命令行模式启动,输入以下命令:

    $sudo vi   /etc/inittab

    修改id后面的数字,改为3,多用户模式,默认虚拟机以多用户命令行模式启动

    (7)利用软件SecureCRT远程终端连接虚拟机,点击Quick Connect,输入如下:

    protocol:SSH2

    hostname:虚拟机ip地址 192.168.2.100(举例)

    port:22

    username:hadoop

    选择accept&save ,然后就可以在远程终端操控虚拟机,比较方便快捷

    用户密码都是hadoop

    (8)修改默认主机名

    进入hadoop用户,然后输入命令

    $sudo vi /etc/sysconfig/network

    然后修改HOSTNAME=bigdata(设置自己认为有意义的名字即可)

    然后输入命令$sudo hostname立刻生效

    * 如果是分布式多节点最好设置为host01(序列)

    (9)修改hosts文件,把IP地址与主机名对应(重要),输入命令:

    $sudo vi /etc/hosts

    然后把自己的IP与主机名添加到最后一行,如

    192.168.2.100      bigdata

    保存并退出

    可以$ping  bigdata测试

    至此,linux基本环境配置成功,接下来安装软件

    5.安装JDK

    在linux系统下安装一个软件的步骤大致是这样的:

    一.把安装包从本地主机上传到linux主目录下

    二.解压安装包到指定路径(建议自己在主目录下定义)

    三.根据软件安装位置修改系统环境变量,并使它生效

    四.修改软件相关配置文件,并测试是否成功

    下面开始JDK的安装:

    1.把安装包从本地主机上传到linux主目录下

    两种方式

    (a)利用软件FileZilla(在本地与虚拟机之间传文件的助手)

    打开FileZilla,输入主机名,用户名,密码和端口号

    192.168.2.100  hadoop  hadoop  22       然后快速连接(quick connect)

    这时在左侧显示的是本地主机目录,右侧显示的是虚拟主机目录

    只需要在左侧找到安装包拖动到右侧目录下,最好拖到根目录下或者根目录下指定的安装包文件下(强烈推荐!!!)

    (b)在远程终端secureCRT中,使用快捷键Alt+p打开一个sftp,使用命令行把文件传到虚拟机主目录下,命令如下

    put d:xxxyylljdk-7u65-linux-i585.tar.gz(自己的压缩包路径/名字)

    2.解压安装包到指定路径

    #创建文件夹

    $mkdir /home/hadoop/app

    #解压

    $tar –zxvf   jdk-7u55-linux-i586.tar.gz  -C  /home/hadoop/app

    3.根据软件安装位置修改系统环境变量,并使它生效

    #java添加到环境变量中

    $sudo  vim /etc/profile

    #在文件最后添加

    export JAVA_HOME=/home/hadoop/app/jdk1.7.0-65

    export PATH=$PATH:$JAVA_HOME/bin     

    #刷新配置

    $source /etc/profile

    4.修改软件相关配置文件,测试是否成功

    最后在命令行输入$java -version ,如果出现版本号既安装成功

    注意:具体路径设置以自己的配置为准,不要死搬硬套,灵活设置

    6.安装Hadoop

    (1)下面开始Hadoop的安装:(参考JDK安装过程)

             先上传hadoop的安装包到服务器上去/home/hadoop/(两种方式)

             #解压

             tar -zxvf hadoop-2.4.1.tar.gz  -C  /home/hadoop/app

             伪分布式需要修改5个配置文件

    第一个:hadoop-env.sh                              $cd/home/hadoop/app/hadoop-2.4.1/etc/hadoop

           $vim hadoop-env.sh

    #新加第27

    export JAVA_HOME=/home/app/jdk1.7.0_65

    第二个:core-site.xml

             <!-- 指定HADOOP所使用的文件系统schemaURI),HDFS的老大(NameNode)的地址 -->

    <property>

    <name>fs.defaultFS</name>

    <value>hdfs://bigdata:9000</value>

    </property>

    <!-- 指定hadoop运行时产生文件的存储目录 -->

    <property>

    <name>hadoop.tmp.dir</name>    

                    <value>        /home/hadoop/app/hadoop2.4.1/hdfs_tmp</value>

                                   </property>

    第三个:hdfs-site.xml

            <!-- 指定HDFS副本的数量 -->

       <property>

    <name>dfs.replication</name>

    <value>1</value>

               </property>

    第四个:mapred-site.xml

    <!-- 指定mr运行在yarn-->

    <property>

    <name>mapreduce.framework.name</name>

    <value>yarn</value>

    </property>

    第五个:yarn-site.xml

    <!-- 指定YARN的老大(ResourceManager)的地址 -->

    <property>

    <name>yarn.resourcemanager.hostname</name>

    <value>bigdata</value>

    </property>

    <!-- reducer获取数据的方式 -->

    <property>

    <name>yarn.nodemanager.aux-services</name>

    <value>mapreduce_shuffle</value>

    </property>

    (2)hadoop添加到环境变量

    $vim /etc/proflie

    export JAVA_HOME=/home/app/java/jdk1.7.0_65

    export HADOOP_HOME=/home/app/hadoop-2.4.1

    export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

    刷新配置文件,使配置生效

    $source /etc/profile

    7.安装Scala

    根据jdk和hadoop的安装经验,按照四个步骤,完成安装

    下载Scala2.10.4,并按照前面的方式上传到linux目录下并解压

    添加环境变量

    $sudo vi /etc/profile

    #scala

    export SCALA_HOME=/home/app/scala  (根据具体情况修改)

    export PATH=$SCALA_HOME/bin:$PATH

    $source /etc/profile

    #测试是否安装成功

    $scala -version

    (2)安装Spark(按照自己的安装路径和版本文件名等配置,不要照着敲)

    根据jdk和hadoop的安装经验,按照四个步骤,完成安装

    按照前面的方式上传到linux目录下并解压

    添加环境变量

    $sudo vi /etc/profile

    #spark

    export SPARK_HOME=/home/hadoop/app/spark-2.3.0-bin-hadoop2.4

    export PATH=$SPARK_HOME/bin:$PATH

    $source /etc/profile

    #测试是否安装成功

    $spark-shell

    #修改conf目录下的spark-env.sh,添加环境变量

    export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

    export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop

    export SPARK_HOME=/home/hadoop/app/spark

    export SPARK_JAR=/home/hadoop/app/spark/lib/spark-assembly-2.3.0-hadoop2.4.0.jar

    export PATH=$SPARK_HOME/bin:$PATH

    8.安装eclipse+maven

    在linux系统下安装一个软件的步骤大致是这样的:

    一.把安装包从本地主机上传到linux主目录下

    二.解压安装包到指定路径(建议自己在主目录下定义)

    三.根据软件安装位置修改系统环境变量,并使它生效

    四.修改软件相关配置文件,并测试是否成功

    和安装前面这些软件一样,安装eclipse和maven同样是把安装包上传到linux主目录,然后解压到指定文件夹,修改环境变量,把软件安装位置添加到环境变量,如果需要修改配置文件就修改,不需要就可以不用修改。最后测试是否成功,这两个都不用修改配置文件。

    9.运行wordcount例子

    #格式化namenode(是对namenode进行初始化)

    $hdfs namenode -format (hadoop namenode -format)

    #进入hadoop

    $cd  /home/hadoop/app/hadoop-2.4.1/sbin

           #先启动HDFS

           $./start-dfs.sh

           #再启动YARN

           $./start-yarn.sh

    #验证是否启动成功

    使用jps命令验证            $jps

    #启动Spark

    $ cd  /home/hadoop/app/spark-1.1.0-bin-hadoop2.4/sbin

    $ ./start-all.sh

    #验证是否启动成功

    使用jps命令验证           

    $jps

    启动成功输入jps后会出现下面的进程:

    1.namenode

    2.secondnamenode

    3.datanode

    4.nodemanager

    5.Resourcemanager

    还可以添加免密认证,然后编写脚本一键执行启动所有进程

    出现这些进程就可以开始运行简单的程序了,我们从wordcount开始示范,必须深入学习之后才能明白每一步和每一个进程代表的含义,目前只是搭建了一个能运行最简单的程序的环境,实际应用中还有很多待解决问题,有待深入学习。

    首先了解简单的在分布式文件系统HDFS操作的命令

    HDFS shell

    1.0查看帮助

    hadoop fs -help <cmd>

    1.1上传

    hadoop fs -put <linux上文件> <hdfs上的路径>

    1.2查看文件内容

    hadoop fs -cat <hdfs上的路径>

    1.3查看文件列表

    hadoop fs -ls /

    1.4下载文件

    hadoop fs -get <hdfs上的路径> <linux上文件>

    Hadoop运行wordcount例子

    $ cd /home/hadoop/app/hadoop-2.4.1/share/hadoop/mapreduce

    $ vi test.txt

    输入以下字符串:

    hello world

    hello tom

    hello jim

    hello kitty

    hello angelababy

    在web浏览器打开http://192.168.2.100:50070

    选择Utilities-> Browse the file system就能查看hdfs系统中的文件test.txt

    在hdfs根目录下建一个文件夹

    $hadoop fs -mkdir /wordcount

    $hadoop fs -mkdir /wordcount/input

    然后使用hdfs的上传指令

    $hadoop fs -put test.txt /wordcount/input

    然后可以在web端找到对应的路径和文件

    接着就开始从最简单的wordcount例子开始

    大数据技术-WordCount例子分别在hadoopspark运行的具体教程

    基于HadoopMapReduce框架下的WordCount运行示例

    第一步:在eclipse中编写程序

    (1) 新建java工程,在新建工程下的src文件下新建包,推荐使用三段式命名法,如com.hadoop.cn,然后继续在包下新建.java文件,开始编写wordcount程序;

    2)由于wordcount程序需要很多hadoop相关的包,所以我们在动手编写程序之前最好先将准备好的hadoop_jar文件中的包添加到项目关联库中,具体操作如下:

    右键点击wordcount项目,选择Build Path下的Add External Archive,然后找到我们准备好的hadoop_jar文件全选并确定。

    3)按照mapreduce框架的规范编写代码

    第二步:使用eclipsejar

    程序编写完成之后,右键点击项目,选择Export,然后选择Java下的JAR file,然后点击next,如图所示,修改自己想保存jar包的位置,然后点击finish,为了方便传输,可以放在桌面,传到linux系统后再删除。

     

    第三步:发送jar包到linux系统并用命令行提交运行

    利用文件传输工具filezilla,将桌面上的jar包传到linux系统下,一般保存在home/app/hadoop/share/mapreduce这个文件下,也可以新建自己的文件,把jar包拖动到该文件下,测试数据可以提前上传到hdfs/wordcount/input下,我们以test.txt为例,我们在mapreduce文件夹下的运行指令为:

    基本格式:hadoop  jar  jar包名称  主类—即main函数所在的类  输入文件路径 输出文件路径

    例:hadoop jar WordCount_hadoop_test.jar cn.itcast.hadoop.mr.wordcount.WCRunner wordcount /wordcount/input  /wordcount/output   

    注:写主类的时候注意一定要写 包名.主类名,主类的名字是你main函数所在类的名字,文件输入路径按照hdfs上的文件路径名写,输出路径可以自己指定,最好是项目名/output

    基于SparkWordCount运行示例

    第一步:在eclipse中编写程序

    (1)新建java工程,在新建工程下的src文件下新建包,推荐使用三段式命名法,如com.hadoop.cn,然后继续在包下新建.java文件,开始编写wordcount程序;

     

    (2)由于wordcount程序需要很多spark相关的包,所以我们在动手编写程序之前最好先将准备好的spark_jar文件中的包添加到项目关联库中,具体操作如下:

    右键点击wordcount项目,选择Build Path下的Add External Archive,然后找到我们准备好的spark_jar文件全选并确定。

    (3) 按照spark编码规范编写代码

    第二步:使用eclipsejar

    程序编写完成之后,右键点击项目,选择Export,然后选择Java下的JAR file,然后点击next,如图所示,修改自己想保存jar包的位置,然后点击finish,为了方便传输,可以放在桌面,

    传到linux系统后再删除。

     

    第三步:发送jar包到linux系统并用命令行提交运行

    利用文件传输工具filezilla,将桌面上的jar包传到linux系统下,一般保存在home/app/spark/examples/jars这个文件下,也可以新建自己的文件,把jar包拖动到该文件下,测试数据可以提前上传到hdfs/wordcount/input下,我们以test.txt为例,我们在mapreduce文件夹下的运行指令为:

    基本格式:spark-submit  --class  主类-main函数所在的类  jar包  输入文件

    spark-submit  --class  com.spark.count.JavaWordCount /home/hadoop/app/spark-2.3.0-bin-hadoop2.7/examples/jars/WordCount_spark_test.jar

    /wordcount/input/test.txt

    注:写主类的时候注意一定要写 包名.主类名,主类的名字是你main函数所在类的名字,文件输入路径按照hdfs上的文件路径名写

  • 相关阅读:
    第三方登录的原理
    浅谈算法的时间复杂度和空间复杂度
    python3的全局变量和局部变量
    python3的嵌套函数
    HTTP协议学习-03
    HTTP协议学习-02
    HTTP协议学习-01
    织梦模板修改方法大全
    java常用用代码
    java学用代码
  • 原文地址:https://www.cnblogs.com/lovehuohuo/p/8602966.html
Copyright © 2011-2022 走看看