Hadoop学习笔记(1)安装配置与运行

Hadoop学习笔记(1)安装配置与运行



1.什么是Hadoop
    Hadoop是适合对大量数据进行分布式存储与计算的平台。
    http://hadoop.apache.org/


2.Hadoop架构
    Hadoop是项目的总称。
    Hadoop核心项目:
    ·HDFS:      Hadoop分布式文件系统(HDFS,Hadoop Distributed File System)。Google File System(GFS)的开源实现。
    ·MapReduce: 并行计算框架(org.apache.hadoop.mapreduce), Google MapReduce的开源实现。


    Hadoop子项目:
    ·HBase:     类似Google BigTable的分布式NoSQL列数据库。(HBase和Avro已经于2010年5月成为顶级 Apache 项目)
    ·Hive:      数据仓库工具,由Facebook贡献。
    ·Zookeeper: 分布式锁设施,提供类似Google Chubby的功能,由Facebook贡献。
    ·Avro:      新的数据序列化格式与传输工具,将逐步取代Hadoop原有的IPC机制。
    ·Pig:       大数据分析平台,为用户提供多种接口。
    ·Ambari:    Hadoop管理工具,可以快捷的监控、部署、管理集群。
    ·Sqoop:     于在HADOOP与传统的数据库间进行数据的传递。


3.Hadoop分布式文件系统HDFS
    主从结构
    ·主节点只有一个: namenode
    ·从节点有很多个: datanodes
    namenode负责:
    ·接收用户操作请求
    ·维护文件系统的目录结构
    ·管理文件与block之间,block与datanode之间关系
    datanode负责:
    ·存储文件
    ·文件被分成block存储在磁盘上
    ·为保证数据安全,文件会有多个副本


4.MapReduce
    主从结构
    ·主节点只有一个: JobTracker
    ·从节点有很多表: TaskTracker
    JobTracker负责:
    ·接收客户提交的计算任务
    ·把计算任务分给TaskTracker
    ·监控TaskTracker的执行情况
    TaskTracker负责:
    ·执行JobTracker分配的计算任务


5.Hadoop集群主机物理分布
    机架Rack1
    主机node1: JobTacker
    主机node2: NameNode
    主机node3: TaskTracker/DataNode
    主机node4: TaskTracker/DataNode
    主机node5: TaskTracker/DataNode
    主机node6: TaskTracker/DataNode
    交换机Switch: 各node通过Switch连接


    机架Rack2
    主机node1: TaskTracker/DataNode
    主机node2: TaskTracker/DataNode
    主机node3: TaskTracker/DataNode
    主机node4: TaskTracker/DataNode
    主机node5: TaskTracker/DataNode
    主机node6: TaskTracker/DataNode
    交换机Switch: 各node通过Switch连接


    每个Rack的各node之间通过交换机通信,各Rack的交换机之间再通过交换机通信。


6.Hadoop主机节点结构
    Master node:
    Namenode
    Secondary namenode
    JobTracker
    Hadoop utility


    Slave node:
    TaskTracker
    Datanode


7.安装Hadoop
  7.1.安装Hadoop准备工作
    使用虚拟机来模拟Hadoop,需要安装VMware
    使用两台虚拟机,安装操作系统Redhat Enterprise Linux.
    虚拟机的主机名分别为hadoop01与hadoop02.
    ip地址分别设置为192.168.1.77,192.168.1.88
    软件准备:
    VMware Workstation 10.0.1 Build 1379776
    rhel-server-6.5-x86_64-dvd.iso
    jdk-6u45-linux-x64-rpm.bin
    hadoop-2.2.0.tar.gz


  7.2.安装VMware和Redhat后,配置主机
    设置主机静态ip地址后重启动网络生效.
    # vi /etc/sysconfig/network-scripts/ifcfg-eth0    // 可通过netconfig命令更改.
    # service network restart                         // 重启网卡生效
    # ifconfig


    修改主机名.
    # hostname                     // 查看主机名
    # hostname hadoop01            // 更改主机名,但重启主机会失效
    # vi /etc/sysconfig/network    // 更改主机名配置文件
    # vi /etc/hosts                // 更改主机名与ip地址绑定
    # ping hadoop01


    关闭防火墙.
    # service iptables status
    # service iptables stop              // 关闭防火墙,如果服务配置是自动启动,重启电脑会再启动
    # service iptables status
    # chkconfig --list | grep iptables   // 查看防火墙服务配置是否自动启动
    # chkconfig iptables off             // 停止防火墙自启动服务
    # chkconfig --list | grep iptables


    配置SSH(Secure Shell)节点互信
    <<1>>创建.ssh目录
    以hadoop用户登录节点,检查/home/hadoop/下是否有.ssh目录,如果没有就创建一个.
    $ mkdir ~/.ssh
    $ chmod 700 ~/.ssh


    <<2>>生成RSA key
    在每个主机节点上执行以下命令创建RSA Key
    $ cd ~/.ssh
    $ /usr/bin/ssh-keygen -t rsa
    全部回车接受默认项,将生成id_rsa.pub文件


    <<3>>将生成的RSA Key添加到authorized_keys中
    以hadoop用户登录节点hadoop01
    $cat id_rsa.pub >> authorized_keys                  //生成authorized_keys文件
    $scp authorized_keys hadoop02:/home/hadoop/.ssh/    //把节点hadoop01的文件authorized_keys传输到hadoop02
    以hadoop用户登录节点hadoop02
    $cat id_rsa.pub >> authorized_keys                  //添加RSA Key到authorized_keys文件
    $scp authorized_keys hadoop01:/home/hadoop/.ssh/    //把节点hadoop02的文件authorized_keys传回到hadoop01


    <<4>>启用ssh协议
    在每个节点上执行以下通信命令,此时需要输入密码.
    $ ssh localhost
    $ ssh hadoop01 date
    $ ssh hadoop02 date
    在每个节点上启动ssh代理,并将ssh key装载到内存中
    $ exec /usr/bin/ssh-agent $SHELL
    $ /usr/bin/ssh-add
    再执行上面的通信命令,不再需要密码.


  7.3.安装JDK.
    使用winscp工具将jdk文件上传到主机,复制到/usr/local/目录下
    # cp /root/Downloads /usr/local
    # cd /usr/local
    # chmod u+x jdk-6u45-linux-x64.bin    // 授予执行权限
    # ./jdk-6u45-linux-x64.bin            // 执行命令解压缩
    # java -version                           // 可以看到默认安装的OpenJDK
    # vi /etc/profile                         // 修改配置文件,添加JAVA_HOME环境变量.
    export JAVA_HOME=/usr/local/jdk
    export PATH=.:$JAVA_HOME/bin:$PATH
    # source /etc/profile                     // 执行命令让配置生效
    # java -version                           // 可以看到安装的JDK


  7.4.安装Hadoop.
    使用winscp工具将jdk文件上传到主机,复制到/usr/local/目录下,解压,修改配置文件
    # tar -zxvf hadoop-2.2.0.tar.gz
    # chown -R hadoop:hadoop hadoop-2.2.0
    # vi /etc/profile                         // 修改配置文件,添加HADOOP_HOME环境变量.
    export JAVA_HOME=/usr/local/jdk
    export HADOOP_HOME=/usr/local/hadoop
    export PATH=.:$HADOOP_HOME:$JAVA_HOME/bin:$PATH
    # source /etc/profile


  7.5.配置Hadoop.
    修改Hadoop的配置文件hadoop-env.sh,core-site.xml,hdfs-site.xml,mapred-site.xml,masters,slaves,hadoop-metrics.properties,log4j.properties
    文件名称                   格式           描述
    hadoop-env.sh              Bash脚本       记录脚本要用的环境变量,以运行Hadoop
    core-site.xml              Hadoop配置xml  Hadoop的核心配置项,如HDFS和MapReduce常用的I/O设置等
    hdfs-site.xml              Hadoop配置xml  Hadoop守护进程的配置项,包括namenode、辅助namenode和datanode
    mapred-site.xml            Hadoop配置xml  MapReduce守护进程的配置项,包括jobtracker和tasktracker
    masters                    文本文件       运行辅助namenode的机器列表(每行一个)
    slaves                     文本文件       运行datanode和tasktracker的机器列表(每行一个)
    hadoop-metrics.properties  Java属性
    log4j.properties           Java属性


    # vi hadoop-env.sh                    // 修改hadoop-env.sh文件,修改JAVA_HOME
    export JAVA_HOME=/usr/local/jdk


    # vi core-site.xml                    // 修改core-site.xml文件,配置namenode主机
    <configuration>
      <property>
        <name>fs.default.name</name>
        <value>hdfs://hadoop01:9000</value>
        <description>change your own nodename hostname</description>
      </property>
      <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop/tmp</value>
      </property>
    </configuration>


    # vi hdfs-site.xml                    // 修改hdfs-site.xml,配置hdfs文件系统
    <configuration>
      <property>
        <name>dfs.replication</name>
        <value>1</value>
      </property>
      <property>
        <name>dfs.permissions</name>
        <value>false</value>
      </property>
    </configuration>


    # vi mapred-site.xml                  // 修改mapred-site.xml,配置JobTracker主机
    <configuration>
      <property>
        <name>mapred.job.tracker</name>
        <value>hdfs://hadoop01:9001</value>
        <description>change your own jobtracker hostname</description>
      </property>
    </configuration>


8.运行Hadoop
  8.1.格式化文件系统
    以hadoop用户登录.
    $ hadoop namenode -format


  8.2.启动与停止Hadoop.
    $ start-all.sh
    $ jps                      // 查看java进程,验证启动的Hadoop进程
    5个进程:NameNode、DataNode、SecondaryNameNode、ResourceManager、NodeManager
    Hadoop1.2版本的5个进程:NameNode、DataNode、SecondaryNameNode、JobTracker、TaskTracker
    通过浏览器访问http://hadoop01:50070,查看Hadoop NameNode,DataNode运行情况
    通过浏览器访问http://hadoop:50030,查看Hadoop JobTracker、TaskTracker运行情况
    $ stop-all.sh


  8.3常见启动问题
    NameNode进程没有启动成功
    (1)没有格式化
    (2)配置文件没有修改正确
    (3)hostname与ip没有绑定
    (4)SSH的免密码登录没有配置成功
    多次格式化问题,需删除/usr/local/hadoop/tmp下文件,再重新格式化.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值