2

集群环境

  • Hadoop版本为2.7.4
  • JDK版本1.8.0_144
  • 安装了三台虚拟机分别设定名称和IP如下
主机名称 IP地址
master 192.168.1.15
slave01 192.168.1.16
slave02 192.168.1.17

  • 服务器上安装hadoop的目录结构为
    /home/用户名/hadoop
    software: 存放的是安装的软件包
    app : 存放的是所有软件的安装目录
    hadoop2.7.4就在app目录下, 这里我的机器的用户都是null
  • hadoop主要配置文件有core-site.xml,hdfs-site.xml,mapred-site.xml,yarn-site.xml
    可以浏览官网查看详细的默认的配置,链接如下
    core-default.xml
    hdfs-default.xml
    mapred-default.xml
    yarn-default.xml
    也可以通过下载解压hadoop后在目录下搜索*default.xml,找到这些默认配置

安装Hadoop

下载hadoop并解压到app目录下

tar -zxvf hadoop-2.7.4.tar.gz -C ~/hadoop/app

配置Hadoop 环境变量

vim /etc/profile添加

# Hadoop Env
export HADOOP_HOME=/home/null/hadoop/app/hadoop-2.7.4
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

修改$HADOOP_HOME/etc/hadoop下的配置文件

$HADOOP_HOME就是hadoop安装目录位置
这里只是将分布式集群的一些必要的简化了的配置罗列出来了,更个性化的配置还是要参照官方文档进行设置

修改hadoop-env.sh文件

//修改JAVA_HOME路径为jdk的安装路径  
export JAVA_HOME=/home/null/hadoop/app/jdk1.8.0_144 

修改yarn-env.sh文件

//修改JAVA_HOME路径为jdk的安装路径  
export JAVA_HOME=/home/null/hadoop/app/jdk1.8.0_144 

修改slaves文件

master 既作为 NameNode 也作为 DataNode

master  
slave01  
slave02

修改core-site.xml文件

该文件可以覆盖一部分用于控制Hadoop核心的默认的关键配置

参数 默认值 解释
fs.defaultFS file:/// namenode RPC交互端口
fs.default.name file:/// 被弃用,是用fs.defaultFS代替
hadoop.tmp.dir /tmp/hadoop-${user.name} 其他临时目录的根地址

先在$HADOOP_HOME目录下手动创建tmp文件夹,等下指定hadoop.tmp.dir为它,hadoop.tmp.dir是hadoop文件系统依赖的基础配置,很多路径都依赖它。hdfs-site-xml中默认配置namenode 和datanode的存放位置的地址就是基于此。 LINUX 系统中,在服务重启后,/tmp 下的目录被清空,所以要转到持久化的地址

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/null/hadoop/app/tmp</value>
    </property>
</configuration>

修改hdfs-site.xml文件

通过该配置文件可以修改有关的HDFS的默认配置

参数 默认值 解释
dfs.replication 3 决定着系统里面的文件块的数据备份个数
dfs.namenode.secondary.http-address 0.0.0.0:50090 secondary namenode服务地址和端口
dfs.namenode.name.dir file://${hadoop.tmp.dir}/dfs/name 决定namenode的fsimage文件在本地文件系统的存储位置,如果是以逗号分割的目录列表,将会复制到所有目录中,冗余
dfs.datanode.data.dir file://${hadoop.tmp.dir}/dfs/data 决定datanode的数据块在本地文件系统的存储位置,如果目录不存在将被创建如果权限允许的话
<configuration>
    <property>    
        <name>dfs.namenode.secondary.http-address</name>    
        <value>master:50090</value>    
    </property> 
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
</configuration>

副本数目不能大于datanode数目
在core-site.中配置了hadoop.tmp.dir,这里保持默认即可


修改mapred-site.xml文件

该文件中的属性可以覆盖用于控制MapReduce任务执行的默认属性值

参数 默认值 解释
mapreduce.framework.name local MapReduce 作业的执行框架
mapreduce.jobhistory.address 0.0.0.0:10020 MapReduce的历史服务器通信地址
mapreduce.jobhistory.webapp.address 0.0.0.0:19888 MapReduce的历史服务器web界面地址
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

默认情况下,Hadoop历史服务器是没有启动的,我们可以通过下面的命令来启动Hadoop历史服务器

sbin/mr-jobhistory-daemon.sh  start historyserver

修改yarn-site.xml文件

该文件中的配置项可以覆盖用于控制YARN组件中的默认属性值

参数 默认值 解释
yarn.nodemanager.aux-services NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序
yarn.resourcemanager.hostname 0.0.0.0 ResourceManager的主机名
yarn.resourcemanager.address ${yarn.resourcemanager.hostname}:8032 ResourceManager 对客户端暴露的地址。客户端通过该地址向RM提交应用程序,杀死应用程序等
yarn.resourcemanager.scheduler.address ${yarn.resourcemanager.hostname}:8030 ResourceManager 对ApplicationMaster暴露的访问地址。ApplicationMaster通过该地址向RM申请资源、释放资源等
yarn.resourcemanager.webapp.address ${yarn.resourcemanager.hostname}:8088 ResourceManager对外web ui地址。用户可通过该地址在浏览器中查看集群各类信息
yarn.nodemanager.resource.memory-mb 8192 NodeManager总的可用物理内存。注意,该参数是不可修改的,一旦设置,整个运行过程中不可动态修改。另外,该参数的默认值是8192MB,即使你的机器内存不够8192MB,YARN也会按照这些内存来使用
yarn.nodemanager.resource.cpu-vcores 8 NodeManager总的可用虚拟CPU个数
<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
    </property>
    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>1024</value>
    </property>
    <property>
        <name>yarn.nodemanager.resource.cpu-vcores</name>
        <value>1</value>
     </property>
</configuration>

这里我架设的虚拟机是1g内存1CPU1核的 ,没设置最后两个属性时,NodeManager启动报错内存不足
相关问题可以参考我的另外一篇博客


启动Hadoop集群

格式化文件系统

在master中执行

hdfs namenode -format

启动NameNode和DataNode

在master $HADOOP_HOME下执行

sbin/.start-dfs.sh

使用jps命令查看master上的进程如下

DataNode
SecondaryNameNode
NameNode
Jps

使用jps命令分别查看slave01和slave02上的进程如下

Jps
DataNode

启动 ResourceManager 和 NodeManager

在master $HADOOP_HOME下执行

sbin/start-yarn.sh

使用jps命令查看master上的进程如下

DataNode
NodeManager
ResourceManager
SecondaryNameNode
NameNode
Jps

使用jps命令分别查看slave01和slave02上的进程如下

Jps
NodeManager
DataNode

终于!Hadoop集群成功启动


NULL
168 声望16 粉丝

Tomorrow is another day!