Hadoop基础之环境搭建

环境搭建

  • 本地环境
  • 可以用于开发的单节点模式,没有分布式的概念
  • 伪分布式环境
  • 一个节点表示一整个集群,但是分布式的概念,一个节点充当分布式里的所有角色
  • 完全分布式
  • 一个集群中有N个节点,他们分别充当分布式中不同的角色,完成不同的任务

伪分布式环境搭建

  • 下载安装包
  • 配制环境变量
#set hadoop enviornment
export HADOOP_HOME=/home/bduser/model/hadoop-2.7.6
PATH=$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin
  • 修改配制文件
  • hdfs-site.xml
<configuration>
    <property>
               <name>dfs.namenode.secondary.http-address</name>
               <value>hadoop100:9001</value>
    </property>
     <property>
            <name>dfs.replication</name>
            <value>1</value>
      </property>

      <property>
            <name>dfs.namenode.name.dir</name>
            <value>/home/bduser/model/hadoop-2.7.6/dfs/name</value>
      </property>

      <property>
            <name>dfs.datanode.data.dir</name>
            <value>/home/bduser/model/hadoop-2.7.6/dfs/data</value>
      </property>

      <property>
            <name>dfs.namenode.checkpoint.dir</name>
            <value>/home/bduser/model/hadoop-2.7.6/dfs/secondaryName</value>
      </property>

      <property>
            <name>dfs.hosts</name>
            <value>/home/user/modules/hadoop/etc/hadoop/dfs</value>
      </property>

      <property>
            <name>dfs.hosts.exclude</name>
            <value>/home/user/modules/hadoop/etc/hadoop/dfs.hosts.exclude</value>
      </property>
</configuration>
  • core-size.xml
<configuration>
      <property>
            <name>fs.default.name</name>
               <value>hdfs://hadoop100:9000</value>
      </property>

      <property>
            <name>net.topology.node.switch.mapping.impl</name>
            <value>hdfs.RackPerception</value>
      </property>
</configuration>
  • yarn-size.xml
<configuration>
      <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
      </property>

      <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>hadoop100</value>
      </property>
</configuration>
  • slaves
  • 填写DataNode从节点
  • hadoop-env.sh
  • 修改JAVA_HOME路径
  • 填写DataNode节点
  • 格式化Hadoop
  • hadoop   namenode   format
  • 启动
  • hadoop/sbin/start-all.sh
  • 需要什么启动什么
  • 注意事项
  • 配置前
    • jdk
    • ssh免密登录
    • 防火墙关闭
  • 如果访问不到webUI
    • 检查防火墙
    • 检查映射关系
    • 浏览器不能使用IE或兼容模式
  • 需要格式化时
    • 关闭服务
    • 删除创建出来的文件
    • 重新格式化

完全分布式

  • 角色分配
  • 第一台机器,NameNode,R esourcesManager
  • 中间机器,DataNode,NodeManager
  • 最后一台机器,DataNode,SecondaryNameNode
  • 配制过程:虚拟机为例
  • 克隆虚拟机
  • 修改物理地址
    • sudo   vim   /etc/udev/rules.d/70-persistent-net.relus
    • 将原网卡注释掉
    • 将新网卡改名为原网卡
    • 记录网卡的物理地址
  • 修改IP地址
    • sudo   vim   /etc/sysconfig/network-scripts/ifcfg-etho
    • 修改网卡配制文件中的物理地址,将记录的物理地址写入
    • 修改ip地址
    • 重启网络:service   network   restart
  • 修改主机名
    • sudo   vim   /etc/sysconfig/network
    • HOSTNAME=新主机名
    • 重新启动:reboot
  • 免密登录
    • 由于节点时完整复制的,包括ssh
    • 不需要重新配制
    • 如果是实体机,需要将不同的公钥附加到authorized_keys
  • 修改Hadoop配制文件
    • 修改配制文件
    • 同步到所有节点
      • rsync   -r   原路径/原文件   目标用户名@目标地址:目标路径
        • 核心命令:rsync,用法与scp一致
        • 区别:
          • scp全部复制
          • rsync只同步不一样的
      • 可以使用脚本来快速操作
    • 远程操作所有节点
      • xcall
        • 核心命令:ssh   用户   主机名/ip   命令
  • 格式化Hadoop集群
    • 只在主节点格式化
    • hadoop/hdfs   namenode   -format
  • 启动服务
  • 常见问题
  • 时间不同步导致服务启动失效
    • 使用网络,连接国家受时中心进行自动同步
    • 使用date命令手动设置
  • 端口占用问题
    • 在启动hadoop时,如果SecondaryNameNode没有起来,很有可能是所需要的端口被占用,检查是什么服务已经占据了端口,进行修改
  • 多次格式化问题
    • 如果多次格式化会导致dfs的id信息与集群不同步
      • 删除dfs目录,重新格式化