zoukankan      html  css  js  c++  java
  • Hadoop学习(一)搭建Hadoop的分布式集群

    搭建Hadoop的分布式集群

    Hadoop集群搭建的准备操作:

    1、准备四台服务器

      四台服务器的主机名分别是:potter2、potter3、potter4、potter5。

      对以上四台服务器需要做一下准备操作,这些准备都是为了将来搭建Hadoop集群做准备的。

      (1)修改各个服务器的主机名。

        第一步:先查看主机名

             

        第二步:永久修改主机名

          

          

          保存退出

      (2)配置各个服务器的IP

        第一步:查看服务器ip

          

        第二步:配置ip

          

      (3)配置各个服务器的主机映射

          配置主机映射:

          

      (4)添加potter用户,并且添加sudoer权限

        第一步:添加用户

        

        设置密码:

        

        第二步:添加sudoer权限

          在root用户下编辑 vi /etc/sudoers

          在文件的如下位置,为hadoop添加一行即可

          root     ALL=(ALL)       ALL     

          potter    ALL=(ALL)       ALL

          然后,hadoop用户和spark用户就可以用sudo来执行系统级别的指令

          [hadoop@hadoop01 ~]$ sudo  useradd  huangxiaoming

      (5)关闭防火墙/关闭selinux

        第一步:关闭防火墙

        

        设置防火墙开机自启:

        

        查看防火墙状态:

        

        第二步:关闭selinux

        

      (6)更改系统启动级别为3

        第一步:查看系统运行的级别

        

        第二步:修改系统默认启动级别

        

        

      (7)安装JDK  

        第一步:准备JDK软件

         jdk-8u73-linux-x64.tar.gz

        第二步:可以通过ftp工具把软件传到linux服务器上面;或者按住键盘上面的ALT+P          直接拖动上去。

         

        第三步:把软件解包解压缩出来到安装路径下去:

          tar -zxvf jdk-8u73-linux-x64.tar.gz -C /usr/local/

          

        第四步:配置环境变量

          1、vi /etc/profile

          2、在该文件最后加入两行代码:

            export JAVA_HOME=/usr/local/jdk1.8.0_73

            export PATH=$PATH:$JAVA_HOME/bin

          3、保存退出

          4、执行 source /etc/profile

        第五步:检测 jdk 是否安装成功,使用命令:java -version

          

    然后进行克隆三台机器,只需要修改IP跟主机名。

      (8)四台服务器做时间同步 

        第一步:使用 date 命令手动简单同步一下

          命令:date -s "2016-10-23 11:11:11"

          修改时间后,需要写入硬件 bios 才能在重启之后依然生效

          命令:hwclock -w

        第二步:配置 crontab 服务,用 ntpdate 定时同步时间(推荐方式)

          ntpdate 202.120.2.101

        第三步:如果类似 202.120.2.101 这种网络时间服务器无法访问,那么请自行搭建时间服务器

        以上两种方式不管怎么做,都不要忘记更改时区。

      (9)四台服务器配置SSH(免密登录)

        第一种方式:手动配置(需要在.ssh文件夹中)命令:cd .ssh

          第一步:在potter2中生成密钥对:命令:ssh-keygen

          第二步:将potter2自己的公钥放置到授权列表文件authorized_keys

              cat id_rsa.pub >> authorized_keys

          第三步:在potter3中生成密钥对:命令:ssh-keygen

          第四步:将potter2中的authorized_keys发送给potter3对应的文件夹下

              scp -r authorized_keys root@192.168.123.103:/root/.ssh/(如果配置了映射文件IP地址可以写成potter3)

          第五步:将potter3中的公钥放置到authorized_keys

              cat id_rsa.pub >> authorized_keys(这样potter3里面authorized_keys就有了potter2和potter3的公钥,可以用 命令:cat authorized_key 查看)

          第六步:将potter3中的authorized_keys发送给potter4对应的文件夹下

              scp -r authorized_keys root@192.168.123.104:/root/.ssh/

          第七步:将potter4中的公钥放置到authorized_keys

              cat id_rsa.pub >> authorized_keys

          第八步:将potter4中的authorized_keys发送给potter5对应的文件夹下

              scp -r authorized_keys root@192.168.123.105:/root/.ssh/

          第九步:将potter5中的公钥放置到authorized_keys

              cat id_rsa.pub >> authorized_keys(这样authorized_keys文件里面就有了potter2、potter3、potter4、potter5的公钥,可以用命令:cat authorized_key 查看)

          第十步:将potter5中的authorized_keys发送个各个linux服务器

              scp -r authorized_keys root@192.168.123.102:/root/.ssh/

              scp -r authorized_keys root@192.168.123.103:/root/.ssh/

              scp -r authorized_keys root@192.168.123.104:/root/.ssh/

          这样每个服务器中就都有了每一个服务器的公钥,配置完成。

        第二种方式:

          用 SecureCRTPortable这个软件将四台服务器连接好

          第一步:点击Window选上TileVertically

          

          会出现以下界面

          

          第二步:点击View,选取ChatWindow

          

          会在下方出现一个输入框

          

          第三步:在空白处右键选择Send Chat to All Sessions,会在空白处上方出现Send Chat to All Sessions这个字样。这样就可以在空白处输入命令一起操控四台服务器。

          

          第三步:在空白处输入命令:ssh-keygen,四台服务器会一起生成密钥对。

          第四步:在空白处输入命令:ssh-copy-id potter2,会在potter2服务器上一起生成四个公钥。

          第五步:在空白处执行三次分别是:

              ssh-copy-id potter3

              ssh-copy-id potter4

              ssh-copy-id potter5

        这样每个服务器上的ssh就配置好了。

      以上的实现可以分两步操作,先准备好potter2,先做完1-7步之后,然后克隆出potter3、potter4、potter5。

      然后再做8和9操作,这样效率最高。

    正式搭建Hadoop的分布式集群

     1、获取hadoop安装包

      第一种方式:从官网直接下载

        hadoop-2.7.5-src.tar.gz 2017-12-17 04:03 45M 源码包

        hadoop-2.7.5.tar.gz     2017-12-17 04:03  207M     安装包

      第二种方式:自己编译

        编译的目的:就是为了获取 跟 当前安装hadoop的操作系统匹配的本地依赖库。

    2、服务器的角色规划(分配主从节点)

      服务      主节点       从节点

      HDFS      NameNode     DataNode
      YARN      ResourceManager  NodeManager

      服务器的数量有四台:

      服务    potter2         potter3       potter4       potter5

      HDFS    namenode      datanode     datanode    datanode
      YARN    nodemanager   nodemanager  nodemanager  ResourceManager

    具体操作步骤:

    1、准备好四台服务器,做好规划

      服务器

      规划安装的用户: potter

      规划安装目录:/home/potter/apps

      规划数据目录:/home/potter/data

    2、获取安装包(最好在家目录下)

      按住键盘Alt+p,直接拖入。

    3、解压缩(需要解压到apps文件夹下)

      tar -zxvf hadoop-2.7.5-centos-6.7.tar.gz -C ~/apps/

    4、修改配置文件(需要在hadoop目录下操作命令:cd apps/hadoop-2.7.5/etc/hadoop/)

      (1)hadoop-env.sh

      (2)core-site.xml

      (3)hdfs-site.xml

      (4)mapred-site.xml

      (5)yarn-site.xml

      (6)slaves

      

      (1)vi hadoop-env.sh

        修改JAVA_HOME

        把     export JAVA_HOME=${JAVA_HOME}

        改成  export JAVA_HOME=/usr/local/java/jdk1.8.0_73

      (2)vi core-site.xml 在<configuration>  </configuration>里面添加

        <property>

        <name>fs.defaultFS</name>

        <value>hdfs://potter2:9000</value>

        </property>

     

        <property>

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

        <value>/home/potter/data/hadoopdata</value>

        </property>

      (3)vi hdfs-site.xml  在<configuration>  </configuration>里面添加

        <property>

        <name>dfs.namenode.name.dir</name>

        <value>/home/potter/data/hadoopdata/name</value>

        <description>为了保证元数据的安全一般配置多个不同目录</description>

        </property>

     

        <property>

        <name>dfs.datanode.data.dir</name>

        <value>/home/potter/data/hadoopdata/data</value>

        <description>datanode 的数据存储目录</description>

        </property>

     

        <property>

        <name>dfs.replication</name>

        <value>2</value>

        <description>HDFS 的数据块的副本存储个数, 默认是3</description>

        </property>

     

        <property>

        <name>dfs.secondary.http.address</name>

        <value>potter3:50090</value>

        <description>secondarynamenode 运行节点的信息,和 namenode 不同节点</description>

        </property>

      (4)mapred-site.xml在<configuration>  </configuration>里面添加  

          需要先复制mapred-site.xml

          命令:cp mapred-site.xml.template mapred-site.xml

        <property>

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

        <value>yarn</value>

        </property>

      (5)vi yarn-site.xml在<configuration>  </configuration>里面添加

        <property>

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

        <value>potter5</value>

        </property>

     

        <property>

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

        <value>mapreduce_shuffle</value>

        <description>YARN 集群为 MapReduce 程序提供的 shuffle 服务</description>

        </property>

      (6)vi slaves

        

      (7)当前的hadoop安装包是存在于hadoop02上的。 但是安装的hadoop是一个分布式的集群。

         把安装包分别分发给其他的节点

         重点强调: 每台服务器中的hadoop安装包的目录必须一致, 安装包的配置信息还必须保持一致

         需要在 apps文件夹下传到另外三台服务器

        scp -r hadoop-2.7.5/ hadoop@potter3:~/apps/

        scp -r hadoop-2.7.5/ hadoop@potter4:~/apps/

        scp -r hadoop-2.7.5/ hadoop@potter5:~/apps/

       (8)配置环境变量    需要在家目录下(~

        千万注意:

     

        1、如果你使用root用户进行安装。   vi /etc/profile  即可   系统变量

     

        2、如果你使用普通用户进行安装。可以用ll -a进行查看.bashrc文件  vi ~/.bashrc    用户变量

         

      [potter@potter2 ~]$ vi .bashrc

        export HADOOP_HOME=/home/hadoop/apps/hadoop-2.7.5

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

        

        使环境变量生效

        [potter@potter2 bin]$ source ~/.bashrc 

        3、查看Hadoop版本

    [potter@potter2 bin]$ hadoop version
    Hadoop 2.7.5
    Subversion Unknown -r Unknown
    Compiled by root on 2017-12-24T05:30Z
    Compiled with protoc 2.5.0
    From source with checksum 9f118f95f47043332d51891e37f736e9
    This command was run using /home/hadoop/apps/hadoop-2.7.5/share/hadoop/common/hadoop-common-2.7.5.jar
    [potter@potter2 bin]$

        4、Hadoop初始化

        [hadoop@hadoop1 ~]$ hadoop namenode -format

        5、启动

          A.启动HDFS(注意:不管在集群中的那个节点都可以)

          

          B.启动YARN(注意:只能在主节点中进行启动)

          

      6、查看4台服务器的进程

      

      

      

      

      7、启动HDFS和YARN的web管理界面

         HDFS : http://192.168.123.102:50070

        YARN : http://hadoop05:8088

        疑惑: fs.defaultFS = hdfs://hadoop02:9000

        解答:客户单访问HDFS集群所使用的URL地址

        同时,HDFS提供了一个web管理界面 端口:50070

      HDFS界面

      

      点击Datanodes可以查看四个节点

      

      YARN界面

        

      点击Nodes可以查看节点

      

      

        需要发送到另外三台服务器:

        scp -r ~/.bashrc potter3:~

        scp -r ~/.bashrc potter4:~ 

        scp -r ~/.bashrc potter5:~

      (下面的操作是没有配置环境变量,可以再需要的时候再配)

       (9)初始化

        需要在bin文件夹下输入命令(已经配置环境变量的命令:)$HADOOP_HOME/bin/hadoop namenode -format

        (没有配置环境变量的命令:)[hadoop@hadoop02 bin]$ /home/hadoop/apps/hadoop-2.7.5/bin/hadoop namenode -format

         只能在HDFS的主节点进行(主节点就是potter2服务器)

        查看初始化:

     

        进入这个目录/home/potter/data/hadoopdata/name 有一个current文件夹,进入current里面有四个文件,说明初始化成功。

      (10)启动

        可以再hadoop文件夹下查看配置的主节点是哪个服务器

     

        命令:cat yarn-site.xml

     

        第一步:启动HDFS   :  不管在集群中的那个节点都可以

     

            [hadoop@hadoop02 bin]$ /home/hadoop/apps/hadoop-2.7.5/sbin/start-dfs.sh

     

        第二步:启动YARN   : 只能在主节点中进行启动

     

            [hadoop@hadoop02 bin]$ /home/hadoop/apps/hadoop-2.7.5/sbin/start-yarn.sh

     

      (11)检测 或者 验证是否成功

     

        第一种方式:JPS 命令 查看 对应的守护进行是否都启动成功

     

        第二种方式:启动HDFSYARNweb管理界面

     

              HDFS :  http://hadoop02:50070

     

              YARN http://hadoop05:8088

     

      (12)简单使用

        HDFS :(可以新建任意一个文件进行运行)

     

        上传文件:~/apps/hadoop-2.7.5/bin/hadoop fs -put zookeeper.out /

     

        下载文件:~/apps/hadoop-2.7.5/bin/hadoop fs -get /zookeeper.out

     

         YARN :

     

        新建一个文件: /wc/input/words.txt

        hello huangbo

     

        hello xuzheng

     

        hello wangbaoqiang

     

        新建一个文件夹:~/apps/hadoop-2.7.5/bin/hadoop fs -mkdir -p /wc/input

        把words.txt上传到HDFS(在家目录下输入命令):

        命令:~/apps/hadoop-2.7.5/bin/hadoop fs -put words.txt /wc/input/

        查看命令:~/apps/hadoop-2.7.5/bin/hadoop fs -ls /wc/input

        进入mapreduce文件夹命令:cd apps/hadoop-2.7.5/share/hadoop/mapreduce/

     

        需要进入到mapreduce文件夹里面,这个文件夹在hadoop文件夹下面,

        [potter@potter2 mapreduce]$

     

        运行一个mapreduce的例子程序: wordcount

     

        命令:

      ~/apps/hadoop-2.7.5/bin/hadoop jar ~/apps/hadoop-2.7.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.5.jar wordcount /wc/input /wc/output

     

        查看最终结果:

     

        ~/apps/hadoop-2.7.5/bin/hadoop fs -cat /wc/output/part-r-00000

     

    最终完成hadoop的集群搭建!!!

     

  • 相关阅读:
    图片懒加载
    python打包后,运行exe程序,报错check_hostname requires server_hostname
    eggjs上传文件,并md5名称保存
    egg-static, 静态资源配置
    js时间转换
    egg中post请求报错invalid csrf token
    egg中sequelize,时区问题,开发时修改表结构
    ImageGrab.grab截图右下角是黑屏
    css 画三角形,悬浮提示
    python 相关
  • 原文地址:https://www.cnblogs.com/sangumaolu/p/8496742.html
Copyright © 2011-2022 走看看