本文主要详细地描述了 hadoop 集群的搭建以及一些配置文件的说明, 用于自己复习以及供新人学习, 若有错误之处还请指出.
前期准备
先给出我的集群架构:
到 hadoop 官网下载好 hadoop 安装包 http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.6.5/hadoop-2.6.5.tar.gz
装好四台虚拟机(我的四台虚拟机是 CentOs6.3 系统)
四台虚拟机都装好 jdk
四台虚拟机都配好免密登录
四台虚拟机都配置好 ip 地址和主机名映射关系(以下是我的地址映射关系)
- vim /etc/hosts
- 192.168.25.13 mini1
- 192.168.25.14 mini2
- 192.168.25.15 mini3
- 192.168.25.16 mini4
以上步骤有不会的可查看我的其他几篇博客:
Linux 下的常用配置
Linux 下配置免密登录
1, 将 hadoop 安装包上传到 mini1 上, 解压后改名, 并创建目录 hadoopdata 与 hadoop 目录平行
- tar -zxvf hadoop-2.6.5.tar.gz -C /root/apps/
- cd /root/apps/
- mv hadoop-2.6.5 hadoop
- mkdir hadoopdata
2, 进入 hadoop 配置文件目录下, 可看到以下配置文件
cd hadoop/etc/hadoop/
3, 修改 hadoop-env.sh 配置文件
vim hadoop-env.sh
# 写上自己的 JAVA_HOME
4, 修改 core-site.xml 配置文件
vim core-site.xml
- <configuration>
- <property>
- <name>fs.defaultFS</name>
- <value>hdfs://mini1:9000</value>
- </property>
- <property>
- <name>hadoop.tmp.dir</name>
- <value>/root/apps/hadoopdata</value>
- </property>
- </configuration>
配置说明:
fs.defaultFS:hadoop 使用什么文件系统
hdfs://mini1:9000: 指定 hadoop 系统使用 hdfs 文件系统, 并指明 namenode 为 mini1, 客户端访问端口为 9000
hadoop.tmp.dir:hadoop 文件存储目录
有 2 个参数可配置, 但一般来说我们不做修改.
fs.checkpoint.period 表示多长时间记录一次 hdfs 的镜像, 默认是 1 小时.
fs.checkpoint.size 表示镜像文件快大小, 默认 64M.
- <property>
- <name>fs.checkpoint.period</name>
- <value>3600</value>
- </property>
- <property>
- <name>fs.checkpoint.size</name>
- <value>67108864</value>
- </property>
5, 修改 hdfs-site.xml(可不做任何配置, 使用默认)
vim hdfs-site.xml
- <configuration>
- <property>
- <name>dfs.namenode.name.dir</name>
- <value>/root/apps/hadoopdata/name</value>
- </property>
- <property>
- <name>dfs.datanode.data.dir</name>
- <value>/root/apps/hadoopdata/data</value>
- </property>
- <property>
- <name>dfs.replication</name>
- <value>3</value>
- </property>
- </configuration>
配置说明:
dfs.namenode.name.dir:namenode 节点的数据存放目录
dfs.datanode.data.dir:datanode 节点的数据存放目录
dfs.replication: 集群中 hdfs 保存数据的副本数
6, 更改 mapred-site.xml.template 的配置文件名, 并进行配置
- mv mapred-site.xml.template mapred-site.xml
- vim mapred-site.xml
- <configuration>
- <property>
- <name>mapreduce.framework.name</name>
- <value>yarn</value>
- </property>
- </configuration>
配置说明:
mapreduce.framework.name: 使用 yarn 运行 mapreduce 程序
7, 修改 yarn-site.xml 配置文件
vim yarn-site.xml
- <configuration>
- <property>
- <name>yarn.resourcemanager.hostname</name>
- <value>mini1</value>
- </property>
- <property>
- <name>yarn.nodemanager.aux-services</name>
- <value>mapreduce_shuffle</value>
- </property>
- </configuration>
配置说明:
yarn.resourcemanager.hostname: 指定 YARN 的老大 (ResourceManager) 的地址
yarn.nodemanager.aux-services: 指定 reducer 获取数据的方式
8, 修改 slaves 文件
- vim slaves
- # 在此文件下写入需要启动 datanode 和 nodemanager 的机器(往往 datanode 和 nodemanager 在一台机器上启动), 一行代表一台机器.
9, 将 hadoop 添加到环境变量, 并重新加载环境变量
- vim /etc/profile
- export HADOOP_HOME=/itcast/hadoop-2.4.1
- export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
- source /etc/profile
重要! 重要! 重要!!!
Apache 提供的 hadoop 本地库是 32 位的, 而在 64 位的服务器上就会有问题, 因此需要自己对源码进行编译 64 位的版本.
自己编译比较麻烦, 可以去网站: http://dl.bintray.com/sequenceiq/sequenceiq-bin/ 下载对应的编译版本.
准备好 64 位的 lib 包后做以下操作:
- # 解压到已经安装好的 hadoop 安装目录的 lib/native 和 lib 目录下
- tar -zxvf hadoop-native-64-2.6.0.tar -C hadoop/lib/native
- tar -zxvf hadoop-native-64-2.6.0.tar -C hadoop/lib
- # 配置环境变量
- vi /etc/profile
- export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
- export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
- source /etc/profile
- #hadoop 检测本地库
- hadoop checknative -a
10, 将 hadoop 和配置文件分别分发给另外三台机器(mini2,mini3,mini4)
scp -r /root/apps/hadoop mini2:/root/apps/
scp -r /root/apps/hadoop mini3:/root/apps/
scp -r /root/apps/hadoop mini4:/root/apps/
- scp /etc/profile mini2:/etc/
- scp /etc/profile mini3:/etc/
- scp /etc/profile mini4:/etc/
不要忘记三台机器都要重新加载一下配置文件
11, 初始化 HDFS
hadoop namenode -format
12, 批量启动 / 停止
- # 批量启动 hdfs
- start-dfs.sh
- # 批量停止 hdfs
- stop-dfs.sh
- # 批量启动 yarn
- strat-yarn.sh
- # 批量停止 yarn
- stop-yarn.sh
# 单独启动或停止 hdfs,yarn
hadoop-daemon.sh start namenode hadoop-daemon.sh stop namenode
hadoop-daemon.sh start datanode hadoop-daemon.sh stop datanode
hadoop-daemon.sh start resourcemanager hadoop-daemon.sh stop resourcemanager
hadoop-daemon.sh start nodemanager hadoop-daemon.sh stop nodemanager
总结
官网提供的版本本地库是 32 位的, 在 64 位主机环境下无法执行. 需要下载 hadoop 源码进行编译.
自己编译参考 https://jingyan.baidu.com/article/ce436649fea8533772afd365.html
配置文件 hdfs-site.xml 可不做任何配置, 使用默认即可
集群中每台机器都要记得修改 / etc/hosts 文件
集群中所有的机器配置环境变量后不要忘记 source 一下(因为本文的环境变量文件是通过 scp 命令传给各台机器的, 很容易忘记 source)
配置免密登录的时候不要忘记本机也配置上(将 mini1 的公钥发给 mini1)(ssh-copy-id mini1)
如果哪台机器启动出错, 可查看相应机器下的日志文件, 根据错误信息百度查询解决方法(/root/apps/hadoop/logs/)(查看. log 结尾的日志文件)
严格按照上述流程安装(包括目录创建以及目录的位置), 可顺利完成集群的搭建
集群中各个端口
更多配置文件信息参考: https://blog.csdn.net/cuitaixiong/article/details/51591410
来源: https://www.cnblogs.com/52mm/p/p9.html