搭建Hadoop集群 (二)

前面的步骤请看  http://www.cnblogs.com/haibinyuan/p/5153681.html

安装Hadoop

解压安装

登录master, 下载解压hadoop 2.6.2压缩包到/home/hm/文件夹. (也可以从主机拖拽或者psftp压缩包到master)

[[email protected] ~]$ tar -xzvf hadoop-2.6.2.tar.gz -C ~
[[email protected] ~]$ mv hadoop-2.6.2 hadoop[[email protected] ~]$ cd hadoop/

修改环境变量

[[email protected] hadoop]$ vi etc/hadoop/hadoop-env.sh 

找到export JAVA_HOME=${JAVA_HOME}, 修改为绝对路径:

# The java implementation to use.
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.95.x86_64

建议同时把etc/hadoop/yarn-env.sh和mapred-env.sh的JAVA_HOME也相应修改.

Optional - 修改$PATH

方便在任何路径下执行hadoop命令和Java命令

[[email protected] hadoop]$ cd ~
[hm@master ~]$ vi .bash_profile

修改为:

# User specific environment and startup programs
export HADOOP_PREFIX=/home/hm/hadoop
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.95.x86_64
PATH=$PATH:$HOME/bin:$HADOOP_PREFIX/bin:$HADOOP_PREFIX/sbin:$JAVA_HOME/bin

export PATH

使更改立即生效:

[[email protected] ~]$ source .bash_profile

测试环境变量设置

[[email protected] hadoop]$ bin/hadoop

可以看到hadoop命令的usage信息.

[[email protected] ~]$ jps

可以看到jvm中的进程信息.

配置分布式Hadoop集群

修改配置文件

hadoop/etc/hadoop/core-site.xml

创建tmp目录, 用于放置hdfs产生的临时文件, 不配置的话, 默认位置是/tmp/hadoop-{username}/, 导致机器重启后每次都需要重新format NameNode.

[[email protected] hadoop]$ mkdir tmp
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9100</value>
    </property>
    <property>
      <name>hadoop.tmp.dir</name>
      <value>file:/home/hm/hadoop/tmp</value>
    </property>
</configuration>

file: 代表在本地文件系统中, hdfs: 则代表在分布式文件系统中.

注意提前查看端口是否有被占用

[[email protected] hadoop]$ netstat -nap | grep 9100

hadoop/etc/hadoop/hdfs-site.xml

创建hdfs文件系统目录:

[[email protected] hadoop]$ mkdir dfs

修改配置文件

<configuration>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/home/hm/hadoop/dfs/name</value>
        <description>  </description>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/home/hm/hadoop/dfs/data</value>
        <description> </description>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
</configuration>

hadoop/etc/hadoop/mapred-site.xml

默认不存在, 需要从template复制或者改名

[[email protected] hadoop]$ cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

hadoop/etc/hadoop/yarn-site.xml

<configuration>
<!-- Site specific YARN configuration properties -->
    <property>
        <description>The hostname of the RM.</description>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
</configuration>

添加master, slave节点的hostname, 或者ip

该文件主要被hadoop的某些脚本调用, 作用是从master一次性向多台slave发生命令. 因此前提是ssh免密码登录必须配置好.

[[email protected] hadoop]$ vi etc/hadoop/slaves

修改为:

slave1
slave2

Optional - 实现机架感知 (rack-aware)

http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/RackAwareness.html

Logging

通过修改etc/hadoop/log4j.properties可以自定义hadoop daemons的log设置

更多配置

比如NodeManagers的状态监控等等, 都可以在yarn-site.xml中配置, 详细参见官方文档: 
http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/ClusterSetup.html

将配置好的Hadoop安装包拷贝到Slaves

这样可以节省很多安装部署的时间, 但必须要保证slave和master拥有同样的文件目录结构, 用户和用户组的名字以及权限.

[[email protected] hadoop]$ scp -r hadoop/ [email protected]:~
[[email protected] hadoop]$ scp -r hadoop/ [email protected]:~

此外, 记得修改slave机器上的环境变量, e.g. .bash_profile文件, 内容和master保持一致.

启动HDFS

格式化分布式文件系统

[[email protected] hadoop]$ bin/hdfs namenode -format

关闭防火墙

CentOS 6.7, 默认会有防火墙开启, DataNode发给NameNode的心跳信息会被挡在防火墙外.

需要去防火墙里设置master, slave对应的端口, 或者不考虑安全性的话, 直接关闭所有集群虚拟机的防火墙. 步骤:

1. 检查防火墙状态

[[email protected] ~]$ sudo /etc/init.d/iptables status

2. 停止防火墙

[[email protected] ~]$ sudo /etc/init.d/iptables stop

可以把防火墙设置为开机不自启

[hm@master hadoop]$ sudo chkconfig iptables off[[email protected] hadoop]$ chkconfig --list iptables

启动HDFS

[[email protected] hadoop]$ sbin/start-dfs.sh

检查启动结果:

在master上, 输入jps, 可以看到NameNode和SecondaryNameNode两个daemon

[[email protected] hadoop]$ jps
24440 Jps
24153 NameNode
24325 SecondaryNameNode

在slave1和slave2上, 输入jps, 可以看到DataNode的daemon

[[email protected] hadoop]$ jps
23852 DataNode
23927 Jps

检查集群状态

[[email protected] hadoop]$ bin/hdfs dfsadmin -report

或者登录 http://master:50070 查看. Live DataNodes应该>0. 否则查看DataNode节点的log看具体原因.

启动YARN

[[email protected] hadoop]$ sbin/start-yarn.sh

此时查看jps结果, 在master上可以看到多了ResourceManager的daemon

[[email protected] hadoop]$ jps
24153 NameNode
24762 Jps
24506 ResourceManager
24325 SecondaryNameNode

在slave上则多了NodeManager的daemon

[[email protected] hadoop]$ jps
23852 DataNode
23971 NodeManager
24082 Jps

至此, 整个集群环境配置完成. 

Web Interface

http://master:50070 NameNode信息, 应该可以看到slave1, slave2的信息.

http://master:8088 ResourceManager信息

注意: 如果虚拟机启用了proxy, 必须把master加入到proxy的Ignored Hosts里面, 否则上述URL无法访问.

运行MapReduce Job

这里以自带的wordcount为例.

准备工作

在hdfs里创建input文件夹: (/user/hm是hm用户在hdfs的默认home)

[[email protected] hadoop]$ bin/hdfs dfs -mkdir -p /user/hm/input/wordcount

创建一个测试文件, 添加些内容, 并上传到hdfs里

[[email protected] hadoop]$ vi tmp/helloworldhello hadoophello masterhello slavehello slave too
[[email protected] hadoop]$ bin/hdfs dfs -put tmp/helloworld input/wordcount

查看内容是否成功上传到hdfs

[[email protected] hadoop]$ bin/hdfs dfs -ls input/wordcount

或者想看看内容是否一致

[[email protected] hadoop]$ bin/hdfs dfs -text input/wordcount/helloworld

重复上述步骤, 多上传几个文件.

运行wordcount程序

[[email protected] hadoop]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.2.jar wordcount input/wordcount output/wordcount

查看运行输出结果:

[[email protected] hadoop]$ bin/hdfs dfs -cat output/wordcount/*
hadoop    1
hello     4
master    1
slave     2
too       1

停止YARN和HDFS

运行结束, 不再需要执行其他任务了, 就可以关闭守护进程:

[[email protected] hadoop]$ sbin/stop-yarn.sh
[hm@master hadoop]$ sbin/stop-dfs.sh

如果希望下次重新格式化hdfs, 最好把相关的文件删除, 然后重启机器. 也建议删除不再需要的log文件释放虚拟机空间.

[[email protected] hadoop]$ rm -rf dfs/
[hm@master hadoop]$ rm -rf tmp/*
[hm@master hadoop]$ rm -rf logs/*
时间: 2024-08-07 17:02:54

搭建Hadoop集群 (二)的相关文章

搭建Hadoop集群 (三)

通过 搭建Hadoop集群 (二), 我们已经可以顺利运行自带的wordcount程序. 下面学习如何创建自己的Java应用, 放到Hadoop集群上运行, 并且可以通过debug来调试. 有多少种Debug方式 Hadoop在Eclipse上的Debug方式 一般来说, Debug最多的应用场景是调试MR中的代码逻辑, 还有部分是调试main方法中的某些代码逻辑. 无论是Standalone, Pesudo-Distributed, 还是Fully-Distributed Mode, 都可以d

Hadoop集群(二) HDFS搭建

HDFS只是Hadoop最基本的一个服务,很多其他服务,都是基于HDFS展开的.所以部署一个HDFS集群,是很核心的一个动作,也是大数据平台的开始. 安装Hadoop集群,首先需要有Zookeeper才可以完成安装.如果没有Zookeeper,请先部署一套Zookeeper.另外,JDK以及物理主机的一些设置等.请参考: Hadoop集群(一) Zookeeper搭建 Hadoop集群(三) Hbase搭建 Hadoop集群(四) Hadoop升级 下面开始HDFS的安装 HDFS主机分配 1

vmware搭建hadoop集群完整过程笔记

搭建hadoop集群完整过程笔记 一.虚拟机和操作系统 环境:ubuntu14+hadoop2.6+jdk1.8 虚拟机:vmware12 二.安装步骤: 先在一台机器上配置好jdk和hadoop: 1.新建一个hadoop用户 用命令:adduser hadoop 2.为了让hadoop用户有sudo的权限: 用root用户打开sudors文件添加红色框里面的内容: 打开文件: 添加内容: 3.配置jdk,我把jdk的压缩包放在了hadoop的用户目录下,然后也解压在当前目录下 修改配置文件(

Hadoop入门进阶步步高(五)-搭建Hadoop集群

五.搭建Hadoop集群 上面的步骤,确认了单机可以执行Hadoop的伪分布执行,真正的分布式执行无非也就是多几台slave机器而已,配置方面的有一点点区别,配置起来就非常简单了. 1.准备三台服务器 192.168.56.101 192.168.56.102 192.168.56.103 在每台机器的/etc/hosts中都将ip及hostname给映射上: 192.168.56.101  nginx1 192.168.56.102  nginx2 192.168.56.103  nginx3

用Docker在一台笔记本电脑上搭建一个具有10个节点7种角色的Hadoop集群(下)-搭建Hadoop集群

上篇:用Docker在一台笔记本电脑上搭建一个具有10个节点7种角色的Hadoop集群(上)-快速上手Docker 上篇介绍了快速上手Docker部分,下面接着介绍搭建Hadoop集群部分. 六.搭建Hadoop伪分布模式 我们先用前面创建的这个容器来搭建Hadoop伪分布模式做测试,测试成功后再搭建完全分布式集群. 1.SSH这个centos容器可以看做是一个非常精简的系统,很多功能没有,需要自己安装.Hadoop需要SSH,但容器没有自带,需要我们安装.①安装SSH # yum -y ins

搭建hadoop集群的linux环境准备

1.修改主机名: 在 root 账号下用命令:vi /etc/sysconfig/network 或sudo vi /etc/sysconfig/network 2.设置系统默认启动级别 在 root 账号下输入 vi /etc/inittab  级别改成3 各启动级别代表含义如下: 0 关机 1 单用户系统,不需要登陆 2 多用户系统但不支持NFS,命令行模式登陆 3 完整多用户模式,命令行模式登陆 4 未定义 5 X11图形模式,图形模式登陆 6.重启 3.配置 hadoop 用户 sudo

搭建Hadoop集群需要注意的问题:

搭建Hadoop集群需要注意的问题: 1.检查三台主机名是否正确 2.检查三台IP是否正确 3.检查 /etc/hosts 映射是否正确 4.检查 JDK和Hadoop 是否安装成功(看环境变量配置) 键入 :sudo vi /etc/profile进到文件之后,检查环境变量配置是否正确: 5.检查 SSH免密码登录 是否设置成功: [master:主机名server1:第一台从机名server2:第二台从机名] 6.检查 Hadoop配置文件 进到hadoop目录下:[注:Nahshon 为用

使用vmware搭建hadoop集群

摘要 本文旨在使用Vmware搭建Hadoop集群,如果你使用的是多台独立的.已安装linux操作系统的计算机搭建Hadoop集群的话,请直接从安装Hadoop 开始 阅读须知 阅读此文之前你需要掌握以下知识,以免文中部分用语令你产生疑惑 熟练使用鼠标和键盘 在windows操作系统下运行.exe文件 访问网页并下载内容 在windows操作系统下能够定位到本地资源所在文件夹 了解ubuntu是linux的一种发行版,如果你不无法理解发行版的概念,可以简单理解成ubuntu是一种linux. 了

Linux 下 LXD 容器搭建 Hadoop 集群

配置要求 主机内存 4GB . 磁盘 100 GB 以上. HOST 机安装常用 Linux 发行版. Linux Container ( LXD ) 以主机 ubuntu 16.04 为例. 安装 LXD . $ sudo apt-get install lxd $ newgrp lxd $ sudo lxd init 查看可用的镜像源,如果使用默认的 image ,可以跳过下面两步,直接进入后面的 launch . $ lxc remote list 选取上一步喜欢的 image ,复制链接