大数据搭建总结

  1. 安装虚拟机

  2. VMware 创建虚拟机,一路 next 就好,可以在安装时配置好 ip,不用修改 ifcfg-end33 文件

  3. 先创建一个模板虚拟机出来,后面的其他机器可以在这基础上克隆,模板机需要修改的:

    1. 配置好 ip(ping locahost/网关/外网都能 ping 通即可)

    2. 关闭防火墙

      systemctl stop firewalld
      systemctl disable firewalld
      
  4. 关闭模板机,克隆三个机子出来,启动,修改 ip 后重启网卡(之后的操作就可以在 XShell 做了)

    vi /etc/sysconfig/network-script/ifcfg-ens33 # 将ip修改,BOOTPROTO修改成static
    # 重启网卡
    systemctl restart network
    
  5. 修改三台机子的 hostname 和 hosts 映射文件

    hostnamectl set-hostname XXX(要取的主机名) # 修改主机名
    vi /etc/hosts
    
  6. 设置 SSH 免密登录

    # 先创建dsa码
    ssh-keygen -t dsa -P '' -f /root/.ssh/id_dsa
    # 将各自的id_dsa.pub发送给要免密登录的机器,添加到.ssh文件夹中的authorized_keys文件中
    # shmily01机器发送
    scp id_dsa.pub shmily02:`pwd`/shmily01_id_dsa.pub
    # shmily02机器添加
    cat shmily01_id_dsa.pub > authorized_keys
    01即可免密登录到02
    
  7. 到此,基本配置完成啦

2.安装 JDK

  1. 将需要的压缩包通过 XFtp 上传到虚拟机中

  2. 将 JDK 解压,配置环境变量

    tar -zxvf jdk-8u181-linux-x64.tar.gz -C /opt/module
    vi /etc/profile
    export JAVA_HOME=/opt/module/jdk
    export PATH=$PATH:$JAVA_HOME/bin
    . /etc/profile
    

3. 安装 zookeeper

  1. 解压 zookeeper 压缩包,配置环境变量

  2. 复制 conf 中的 zoo_sample.cfg 为 zoo.cfg 并修改

    dataDir=/var/hadoop/zk
    # 在最后添加
    server.1=192.168.47.11:2888:3888
    server.2=192.168.47.12:2888:3888
    server.3=192.168.47.13:2888:3888
    
  3. 在/var/hadoop/zk 中创建 myid, 192.168.47.11 写 1 192.168.47.12 写 2 192.168.47.13 写 3,和 server 后的数字一致

    zkServer.sh start  # 启动
    zkServer.sh status # 查看状态
    

4.安装 hadoop

  1. 解压压缩包,配置环境变量

  2. 修改配置文件中的 JAVA_HOME(hadoop-env.sh,yarn-env.sh,mapred-env.sh)

  3. 直接来搭建完全分布式吧!

  4. 修改 core-site.xml

    <configuration>
         <!--用来指定hdfs的路径,mycluster为固定属性名和hdfs-site中mycluster-->
        <property>
            <name>fs.defaultFS</name>
           <value>hdfs://mycluster</value>
        </property>
        <!--用来指定hadoop运行时产生文件的存放目录-->
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/var/hadoop/ha</value>
        </property>
        <!-- 配置zookeeper队列 -->
        <property>
            <name>ha.zookeeper.quorum</name>
            <value>shmily01:2181,shmily02:2181,shmily03:2181</value>
        </property>
    </configuration>
    
  5. 修改 hdfs-site.xml

    <configuration>
        <!--配置block副本数量-->
        <property>
            <name>dfs.replication</name>
            <value>2</value>
        </property>
        <property>
            <name>dfs.nameservices</name>
            <value>mycluster</value>
        </property>
        <property>
            <name>dfs.ha.namenodes.mycluster</name>
            <value>nn1,nn2</value>
        </property>
        <!--nn1的RPC通信地址-->
        <property>
            <name>dfs.namenode.rpc-address.mycluster.nn1</name>
            <value>shmily01:8020</value>
        </property>
        <!--nn2的RPC通信地址-->
        <property>
            <name>dfs.namenode.rpc-address.mycluster.nn2</name>
            <value>shmily02:8020</value>
        </property>
        <!--nn1的http通信地址-->
        <property>
            <name>dfs.namenode.http-address.mycluster.nn1</name>
            <value>shmily01:50070</value>
        </property>
        <!--nn2的http通信地址-->
        <property>
            <name>dfs.namenode.http-address.mycluster.nn2</name>
            <value>shmily02:50070</value>
        </property>
        <!--指定namenode的元数据在JournalNode上的存放位置, 这样,namenode2可以从jn集群里获取最新的namenode的信息,达到热备的效果-->
        <property>
            <name>dfs.namenode.shared.edits.dir</name>
            <value>qjournal://shmily01:8485;shmily02:8485;shmily03:8485/mycluster</value>
        </property>
        <!--指定JournalNode存放数据的位置-->
        <property>
            <name>dfs.journalnode.edits.dir</name>
            <value>/var/hadoop/ha/jn</value>
        </property>
        <!--配置切换的实现方式-->
        <property>
            <name>dfs.client.failover.proxy.provider.mycluster</name>
            <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
        </property>
        <!--配置隔离机制-->
        <property>
          <name>dfs.ha.fencing.methods</name>
          <value>sshfence</value>
        </property>
        <!--配置隔离机制的ssh登录秘钥所在的位置-->
        <property>
          <name>dfs.ha.fencing.ssh.private-key-files</name>
          <value>/root/.ssh/id_dsa</value>
        </property>
        <!--开启namenode故障时自动切换-->
        <property>
          <name>dfs.ha.automatic-failover.enabled</name>
          <value>true</value>
        </property>
         <!--设置hdfs的操作权限,false表示任何用户都可以在hdfs上操作文件,生产环境不配置此项,默认为true--> 
        <property>  
          <name>dfs.permissions</name>  
          <value>false</value>  
        </property>
    </configuration>
    
  6. 修改 slaves,添加 datanode

    shmily01
    shmily02
    shmily03
    
  7. 添加 yarn 了,修改 mapred-site.xml,让 mp 支持 yarn

        <!--指定mapreduce运行在yarn上-->
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
    
  8. 修改 yarn-site.xml

        <!--NodeManager获取数据的方式-->
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
        <!-- 开启YARN HA -->
        <property>
            <name>yarn.resourcemanager.ha.enabled</name>
            <value>true</value>
        </property>
        <property>
            <name>yarn.resourcemanager.cluster-id</name>
            <value>cluster1</value>
        </property>
        <!-- 指定两个resourcemanager的名称 -->
        <property>
            <name>yarn.resourcemanager.ha.rm-ids</name>
            <value>rm1,rm2</value>
        </property>
        <property>
            <name>yarn.resourcemanager.hostname.rm1</name>
            <value>shmily02</value>
        </property>
        <property>
            <name>yarn.resourcemanager.hostname.rm2</name>
            <value>shmily03</value>
        </property>
        <property><name>yarn.resourcemanager.webapp.address.rm1</name>
            <value>shmily02:8088</value>
        </property>
        <property>
            <name>yarn.resourcemanager.webapp.address.rm2</name>
            <value>shmily03:8088</value>
        </property>
        <!-- 配置zookeeper的地址 -->
        <property>
          <name>yarn.resourcemanager.zk-address</name>
         <value>shmily01:2181,shmily02:2181,shmily03:2181</value>
        </property>
        <!-- 是否启动一个线程检查每个任务正在使用的物理内存量,如果任务超出分配制,则直接将其杀掉,默认是true -->
        <property>
          <name>yarn.nodemanager.pmem-check-enabled</name>
          <value>false</value>
        </property>
        <property>
          <name>yarn.nodemanager.vmem-check-enabled</name>
          <value>false</value>
        </property>
    
  9. 记得把这个 hadoop 分发给其他俩台机器嗷

  10. 分别启动三台机器的 journalnode

    hadoop-daemon.sh start journalnode
    
  11. 在一台 namenode 中格式化第一台 namenode

    hadoop namenode -format
    

    启动第一台 namenode

    hadoop-daemon.sh start namenode
    
  12. 在第二台 namenode 中同步第二台 namenode

    hdfs namenode -bootstrapStandby
    
  13. 在第一台 shmily01 中的格式化 zookeeper

    hdfs zkfc -formatZK
    
  14. 好了好了,可以启动了

    start-all.sh # 开启
    stop-all.sh  # 关闭所有
    
  15. 然后使用 jps 查看一下进程,resourcemanager 应该是没起来,需要去 shmily02,shmily03 中手动启动

    yarn-daemon.sh start resourcemanager
    
  16. jps 是这样就 ok 了
    shmily01.png
    shmily02.png
    shmily03.png

  • Hadoop

    Hadoop 是由 Apache 基金会所开发的一个分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

    55 引用 • 118 回帖 • 708 关注
  • Hive
    15 引用 • 7 回帖 • 1 关注
  • HBase

    HBase 是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的 Google 论文 “Bigtable:一个结构化数据的分布式存储系统”。就像 Bigtable 利用了 Google 文件系统所提供的分布式数据存储一样,HBase 在 Hadoop 之上提供了类似于 Bigtable 的能力。

    14 引用 • 6 回帖 • 4 关注
回帖
请输入回帖内容...