Hadoop 2.8.0 半自动化安装 ================================== :keywords: hadoop 安装, hadoop 入门, hadoop 准备 1, 虚拟机准备 --------------- | 俺使用 VirtualBox 创建了 3 台虚拟机,分别叫 `ubuntu-1`, `ubuntu-2`, `ubuntu-3` 。 | 均配置了 4 个网卡, 网卡模式有 桥接模式,内部模式 还有 NAT 模式。 | 桥接模式可以供宿主机访问,内部模式用于 3 台虚机之间访问。 | 内部模式的主机分别为 `ubuntu-1 10.10.10.1`, `ubuntu-2 10.10.10.2`, `ubuntu-3 10.10.10.3` 。 2, Hadoop 分发 ---------------------------- | 安装分布式软件最让新手头疼的是,一台机器一台机器地登录上去,一条命令一条命令的执行,非常耗时间,让学习的热情一下子冷却了一半。 | 所幸,我们可以借助运维神器 `ansible` 一键 完成机器的初始化工作。 | ansible 有一个 playbook 的概念,有点像写剧本的意味。我编写了一个如下的play: **play.yml**:: --- - hosts: taoge-ubuntu tasks: - name: create hadoop user and generate ssh key user: name: hadoop password: hadoop shell: /bin/bash generate_ssh_key: yes ssh_key_bits: 2048 ssh_key_file: .ssh/id_rsa - name: add authorize key to slaves authorized_key: user: hadoop state: present key: "{{ lookup('file', '/home/hadoop/.ssh/id_rsa.pub')}}" - name: copy hadoop-2.8.0.tar.gz copy: src: /root/hadoop-2.8.0.tar.gz dest: /home/hadoop/hadoop-2.8.0.tar.gz owner: hadoop mode: 0644 - name: unarchive hadoop-2.8.0.tar.gz unarchive: src: /home/hadoop/hadoop-2.8.0.tar.gz dest: /home/hadoop/ remote_src: True - name: add /etc/hosts lineinfile: path: /etc/hosts line: '10.10.10.1 hadoop-1' - name: add /etc/hosts lineinfile: path: /etc/hosts line: '10.10.10.2 hadoop-2' - name: add /etc/hosts lineinfile: path: /etc/hosts line: '10.10.10.3 hadoop-3' - name: add JAVA_HOME lineinfile: path: /home/hadoop/.bashrc line: 'export JAVA_HOME=/opt/jdk1.8.0_131/' 3, Hadoop 配置 ------------------------- | Hadoop 配置使用了 XML 格式,为什么用 XML 而不用其它的格式呢?这是个好问题。 | 配置 DFS 的话,只要配置 两个文件: `core-site.xml`, `hdfs-site.xml`。 配置文件都在 etc/hadoop 文件夹里。 | `core-site.xml` 在 三节点设置都一样, `hdfs-site.xml` 在 namenode 和 datanode 不一样。 | 我的一些配置如下: **NameNode**:: core-site.xml: fs.defaultFS hdfs://hadoop-1:9000 hdfs-site.xml dfs.replication 2 dfs.namenode.name.dir /home/hadoop/nn dfs.namenode.handler.count 10 dfs.hosts /home/hadoop/hadoop-2.8.0/hosts **DataNode**:: hdfs-xite.xml dfs.replication 2 dfs.datanode.data.dir /home/hadoop/dd 4, Up, Up, Up ! --------------------- | Hadoop 的分布式存储系统是 `Master-Slave` 模式,也就是一个包工头和多个工人协作的模式。 | 所以节点类型有 2 种: `NameNode`, `DataNode`, 也就是控制流和数据流的区别。 | 俺设置的是 `NameNode` 是 `hadoop-1`, `DataNode` 是 `hadoop-2` 和 `hadoop-3` 。 | 在 `NameNode` 上执行: `bin/hdfs namenode > namenode.log 2>&1 &` | 在 `DataNode` 上执行: `bin/hdfs datanode > datanode.log 2>&1 &` | 好,现在 Hadoop DFS 已经搭建起来了! | 欢迎来到大数据的世界。 让大象撑爆您的容器或虚拟机吧! Q&A: 为什么我遇到了网上没有的问题? -------------------------------------- | 不可避免的,凡是学习一个新东西,总会有老手都知道,而新手百思不得其解的问题。 | 这时候就是考验 DEBUG 的能力的时候。 | 对此俺只有一个忠告 : 多喝水,仔细看日志。 - DataNode 不能连接到 NameNode, 连接被拒绝 ? 一般情况下,NameNode 监听端口时绑定的 host 可能不同。比如 绑定localhost的时候只有本地可以访问。 - NameNode 启动总是显示 dfs 的文件夹为空 file:/// ? 很有可能启动时没有读取正确的配置,可以使用 ` bin/hdfs getconf` 这个命令来查看配置是否是自己写的配置。 .. feed-entry:: :author: Taoge :date: 2017-04-28