最近在学习大数据, 需要安装 Hadoop, 自己弄了好久, 最后终于弄好了网上也有很多文章关于安装 Hadoop 的, 但总会遇到一些问题, 所以把在 CentOS 7 安装 Hadoop 3.0.0 的整个过程记录下来, 有什么不对的地方大家可以留言更正
一 ssh 免密登录
1 测试是否能免密登录
- # ssh localhost
- The authenticity of host localhost (::1) cant be established.
2 设置免密登录
1)去掉 /etc/ssh/sshd_config 中的两行注释, 如没有则添加, 所有服务器都要设置的:
- #RSAAuthentication yes
- #PubkeyAuthentication yes
2)生成秘钥:
# ssh-keygen -t rsa
备注: 输入命令后回车 4 次
3)复制到公共密钥中:
# cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
4)将秘钥复制到目标服务器:
# ssh-copy-id 目标服务器 IP
5)测试:(没有报错, 并没有提示输入目标服务器用户密码, 用户切换到目标服务器用户名则成功)
# ssh 目标服务器 IP
备注: 配置好了 hadoop1 到 hadoop2 免密登录, 同时需要配置 hadoop2 到 hadoop1 的免密登录, 在 hadoop2 上操作, 过程同上
二安装 JDK
hadoop-3.0.0 需要 jdk1.8, 此处省略安装过程, 网上很多, 过程也比较简单
三安装 hadoop
1 下载 hadoop:
http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-3.0.0/
2 解压安装:
1)复制 hadoop-3.0.0.tar.gz 到 / usr/hadoop 目录下, 然后
#tar -xzvf hadoop-3.0.0.tar.gz
解压, 解压后目录为:/usr/hadoop/hadoop-3.0.0,Hadoop 解压后即可使用输入如下命令来检查 Hadoop 是否可用, 成功则会显示 Hadoop 版本信息:
- #cd /usr/hadoop/hadoop-3.0.0
- #./bin/hadoop version
2), 在 / usr/hadoop / 目录下, 建立 tmp:
#mkdir /usr/hadoop/tmp
3)设置环境变量:
- #vi /etc/profile
- # set hadoop path
- export HADOOP_HOME=/usr/hadoop/hadoop-3.0.0
- export PATH=$PATH:$HADOOP_HOME/bin
4)使环境变量生效, 终端中运行如下命令:
#source /etc/profile
5)设置 hadoop:
一共需要配置主要的 6 个文件:
- hadoop-3.0.0/etc/hadoop/hadoop-env.sh
- hadoop-3.0.0/etc/hadoop/yarn-env.sh
- hadoop-3.0.0/etc/hadoop/core-site.xml
- hadoop-3.0.0/etc/hadoop/hdfs-site.xml
- hadoop-3.0.0/etc/hadoop/mapred-site.xml
- hadoop-3.0.0/etc/hadoop/yarn-site.xml
配置 hadoop-env.sh:
- # The java implementation to use.
- #export JAVA_HOME=${JAVA_HOME}
- export JAVA_HOME=/usr/java/jdk1.8.0_152 // 根据自己 jdk 安装目录配置
配置 yarn-env.sh:
- #The java implementation to usr
- export JAVA_HOME=/usr/java/jdk1.8.0_152 // 根据自己 jdk 安装目录配置
配置 core-site.xml:
- <!-- 指定 HADOOP 所使用的文件系统 schema(URI),HDFS 的老大 (NameNode) 的地址 -->
- <configuration>
- <property>
- <name>fs.default.name</name>
- <value>hdfs://localhost:9000</value>
<description>HDFS 的 URI, 文件系统://namenode 标识: 端口号</description>
- </property>
- <property>
- <name>hadoop.tmp.dir</name>
- <value>/usr/hadoop/tmp</value>
- <description>namenode 上本地的 hadoop 临时文件夹</description>
- </property>
- </configuration>
配置 hdfs-site.xml:
- <configuration>
- <!hdfs-site.xml-->
- <property>
- <name>dfs.replication</name>
- <value>1</value>
- <description > 副本个数, 配置默认是 3, 应小于 datanode 机器数量</description>
- </property>
- </configuration>
配置 mapred-site.xml:
- <!-- 指定 mr 运行在 yarn 上 -->
- <configuration>
- <property>
- <name>mapreduce.framework.name</name>
- <value>yarn</value>
- </property>
- </configuration>
配置 yarn-site.xml:
- <!-- 指定 YARN 的老大 (ResourceManager) 的地址 -->
- <configuration>
- <property>
- <name>yarn.nodemanager.aux-services</name>
- <value>mapreduce_shuffle</value>
- </property>
- <!-- reducer 获取数据的方式 -->
- <property>
- <name>yarn.nodemanager.aux-services</name>
- <value>mapreduce_shuffle</value>
- </property>
- </configuration>
备注: 以上配置都是以最简配置, 还有很多配置可以自行添加
6)将 / usr/hadoop 复制到其他服务器:
- scp -r
- /usr/hadoop
- root@192.168.1.11:
- /usr/hadoop
7)格式化 namenode:
- #CD /usr/hadoop/hadoop-3.0.0
- # ./bin/hdfs namenode -format
成功的话, 会看到 successfully formatted 和 Exitting with status 0 的提示, 若为 Exitting with status 1 则是出错
备注: 只需格式化 namenode,datanode 不需要格式化(若格式化了, 可将 / usr/hadoop/tmp 目录下文件都删除), 所以先将安装文件夹复制到其他服务器, 再格式化
四测试:
1 启动 HDFS:
- #CD /usr/hadoop/hadoop-3.0.0
- # sbin/start-dfs.sh
如果运行脚本报如下错误,
- ERROR: Attempting to launch hdfs namenode as root
- ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting launch.
- Starting datanodes
- ERROR: Attempting to launch hdfs datanode as root
- ERROR: but there is no HDFS_DATANODE_USER defined. Aborting launch.
- Starting secondary namenodes [localhost.localdomain]
- ERROR: Attempting to launch hdfs secondarynamenode as root
- ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting launch.
解决方案
(缺少用户定义而造成的)因此编辑启动和关闭
- $ vim sbin/start-dfs.sh
- $ vim sbin/stop-dfs.sh
顶部空白处添加
- HDFS_DATANODE_USER=root
- HADOOP_SECURE_DN_USER=hdfs
- HDFS_NAMENODE_USER=root
- HDFS_SECONDARYNAMENODE_USER=root
2)启动 ResourceManager 和 NodeManager:
- #CD /usr/hadoop/hadoop-3.0.0
- #sbin/start-yarn.sh
如果启动时报如下错误,
- Starting resourcemanager
- ERROR: Attempting to launch yarn resourcemanager as root
- ERROR: but there is no YARN_RESOURCEMANAGER_USER defined. Aborting launch.
解决方案
(也是由于缺少用户定义)
是因为缺少用户定义造成的, 所以分别编辑开始和关闭脚本
- $ vim sbin/start-yarn.sh
- $ vim sbin/stop-yarn.sh
顶部空白添加
- YARN_RESOURCEMANAGER_USER=root
- HADOOP_SECURE_DN_USER=yarn
- YARN_NODEMANAGER_USER=root
3)启动验证:
执行 jps 命令, 出现下图基本完成
备注: 也可以使用下面命令同时启动 HDFS 和 ResourceManagerNodeManager:
- #CD /usr/hadoop/hadoop-3.0.0
- #sbin/start-all.sh
Hadoop2.3-HA 高可用集群环境搭建 http://www.linuxidc.com/Linux/2017-03/142155.htm
Hadoop 项目之基于 CentOS7 的 Cloudera 5.10.1(CDH)的安装部署 http://www.linuxidc.com/Linux/2017-04/143095.htm
Hadoop2.7.2 集群搭建详解(高可用) http://www.linuxidc.com/Linux/2017-03/142052.htm
使用 Ambari 来部署 Hadoop 集群(搭建内网 HDP 源) http://www.linuxidc.com/Linux/2017-03/142136.htm
Ubuntu 14.04 下 Hadoop 集群安装 http://www.linuxidc.com/Linux/2017-02/140783.htm
CentOS 6.7 安装 Hadoop 2.7.2 http://www.linuxidc.com/Linux/2017-08/146232.htm
Ubuntu 16.04 上构建分布式 Hadoop-2.7.3 集群 http://www.linuxidc.com/Linux/2017-07/145503.htm
CentOS 7 下 Hadoop 2.6.4 分布式集群环境搭建 http://www.linuxidc.com/Linux/2017-06/144932.htm
Hadoop2.7.3+Spark2.1.0 完全分布式集群搭建过程 http://www.linuxidc.com/Linux/2017-06/144926.htm
来源: http://www.bubuko.com/infodetail-2517038.html