本篇源自Hadoop官网,先将中文翻译如下。
目标
本文章主要是描述如何安装和配置几个节点的Hadoop clusters,甚至于数以千计的节点数。为了了解详细的安装步骤,需要先了解如何安装在单台机器上。
本文档不包含高级的设置点,比如:安全性或者高可用性。
准备
- 需要安装Java环境
- 从Apache网站下载一个稳定的Hadoop安装镜像
安装
搭建一个Hadoop集群需要将软件安装到集群中的所有机器中,或者一个适合当前操作系统集成的系统。这样做的目标就是区分不同的硬件安装不同的功能。
典型的安装是在一个集群中一个机器作为NameNode节点,其它机器作为ResourceManager.当然,这台机器的角色就是Masters.其它的服务(比如Web App Proxy Server 和MapReduce Job History server)一般运行在别的硬件或者共享的信息架构上,依赖于系统的负载。
在集群中剩下的机器就是DataNode和NodeManager.他们的角色是slaves.
非安全模式下的Hadoop配置
Hadoop的Java配置项被分为两部分重要的配置文件:
- 只读的默认配置文件:core_default.xml,hdfs-default.xm,yarn-default.xml 和mapred-default.xml.
- 特殊定义的配置文件:etc/hadoop/core-site.xml,etc/hadoop/hdfs-site.xml,etc/hadoop/yarn-site.xml和etc/hadoop/mapred-site.xml.
另外,需要有权限设置Hadoop scripts脚本在分布式集群中的各个目录文件 bin/directory,需要设置的文件为 etc/hadoop-env.sh 和 etc/hadoop/yarn-env.sh.
为了能够保证Hadoop守护进程很好的运行,需要配置hadoop集群所需要的环境。
HDFS守护进程是NameNode,SecondaryNameNode和DataNode,YARN守护进程是ResourceManager,NodeManager和WebAppProxy,如果MapReduce被使用,那么MapReduce 的任务 History Server将会被运行,如果是大集群的安装,他们将被运行在不同的主机上。
Hadoop守护进程环境配置
管理员需要利用etc/hadoop/hadoop-env.sh 和可选的 etc/hadoop/mapred-env.sh 和etc/hadoop/yarn-env.sh 脚本去配置Hadoop各个守护进程的环境。
之少,需要配置的是JAVA_HOME确保在每一个远程节点上都是正确的。
管理员需要配置一下的独自守护进程利用下面的表格:
守护进程 | 参数名称 |
---|---|
NameNode | HADOOP_NAMENODE_OPTS |
DataNode | HADOOP_DATANODE_OPTS |
Secondary NameNode | HADOOP_SECONDARYNAMENODE_OPTS |
ResourceManager | YARN_RESOURCEMANAGER_OPTS |
NodeManager | YARN_NODEMANAGER_OPTS |
WebAppProxy | YARN_PROXYSERVER_OPTS |
Map Reduce Job History Server | HADOOP_JOB_HISTORYSERVER_OPTS |
举一个例子,可以配置Namenode用parallelGC,下面的片段需要被添加到hadoop-env.sh:
export HADOOP_NAMENODE_OPTS="-XX:+UseParallelGC"
来看一下 etc/hadoop/hadoop-env.sh的其它一些例子。
其它的一些有用的可配置参数,可以自定义如下:
- HADOOP_PID_DIR 这个是守护进程ID文件存放的目录路径
- HADOOP_LOG_DIR 这个是守护进程日志存储的目录路径,日志会被自动创建如果没有的话
- HADOOP_HEAPSIZE/YARN_HEAPSIZE 最大的堆使用的内存值,单位为:MB,如果这个参数被设置成1000,那就意味着堆将使用1000MB的内存值,这个参数主要用于守护进程内存值的大小设置。默认值是1000,可以为每个守护进程分配不同大小的值。
在很多场景中,必须设置这个HADOOP_PID_DIR和HADOOP_LOG_DIR这两个目录,以方便用户可以输出日志在运行守护进程的时候。
守护进程 | 参数值 |
---|---|
ResourceManager | YARN_RESOURCEMANAGER_HEAPSIZE |
NodeManager | YARN_NODEMANAGER_HEAPSIZE |
WebAppProxy | YARN_PROXYSERVER_HEAPSIZE |
Map Reduce Job History Server | HADOOP_JOB_HISTORYSERVER_HEAPSIZE |
Hadoop守护环境配置
在Hadoop坏境中有一个非常重要的参数文件:
- etc/hadoop/core-site.xml
参数名称 | 值 | 提示 |
---|---|---|
fs.defaultFS | NameNode URI | hdfs://host:port/ |
io.file.buffer.size | 131072 | Size of read/write buffer used in SequenceFiles. |
- etc/hadoop/hdfs-site.xml
- 配置守护进程NameNode:
参数名称 | 值 | 提示 |
---|---|---|
dfs.namenode.name.dir | 文件路径,用户存储NameNode进程的命名空间和事务日志 | 如果这里用逗号分割的列表,将会复制分发到各个目录以做为冗余数据进行备份 |
dfs.hosts / dfs.hosts.exclude | DataNodes的节点列表(包含或排除) | 如果需要,用户通过设置这个列表来控制DataNodes的数量。 |
dfs.blocksize | 268435456 | HDFS 快的大小为了存储大文件系统. |
dfs.namenode.handler.count | 100 | 对于大量DataNodes的节点数开启的多线程个数. |
- Configuration for DataNode:
参数名称 | 值 | 提示 |
---|---|---|
dfs.datanode.data.dir | 存储数据块的本地目录系统,一般以路径列表存放 | 如果这里是以逗号分隔的目录列表,那么这个数据将被存储在所有的目录下,一般是不同的磁盘驱动 |