一、环境信息
Hadoop源码包下载
http://mirror.bit.edu.cn/apache/hadoop/common集群环境
IP | 主机名 |
---|---|
192.168.205.60 | master |
192.168.205.65 | slave1 |
192.168.205.66 | slave2 |
3. 注意事项
(1)一下步骤主要针对纯净机器安装hadoop和jdk
(2)如果要在机器上装多个版本的hadoop和jdk,需要新建多个用户,并用bashrc来区分环境变量。root在使用前source 指定用户的bashrc文件。并且一定要删掉/usr/bin/下面的hadoop和jdk,防止环境变量不能生效。
[root@master /]# cat /home/hadoop1/.bashrc
#set java environment
JAVA_HOME=/usr/local/jdk1.6.0_45
JRE_HOME=$JAVA_HOME/jre
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH #$PATH要放在最后,否则不能正常切换jdk版本
export JAVA_HOME JRE_HOME PATH CLASSPATH
#set hadoop environment
HADOOP_HOME=/usr/local/hadoop-1.2.1
export PATH=$HADOOP_HOME/bin:$PATH #$PATH要放在最后,否则不能正常切换hadoop版本
[root@master /]# cat/home/hadoop2/.bashrc
#set java environment
JAVA_HOME=/usr/local/jdk1.8.0_171
JRE_HOME=$JAVA_HOME/jre
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH #$PATH要放在最后,否则不能正常切换jdk版本
export JAVA_HOME JRE_HOME PATH CLASSPATH
#set hadoop environment
HADOOP_HOME=/usr/local/hadoop-2.8.4
export PATH=$HADOOP_HOME/bin:$PATH #$PATH要放在最后,否则不能正常切换hadoop版本
二、安装流程
- 下载安装包
#Master
wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.8.4/hadoop-2.8.4.tar.gz
tar zxvf hadoop-2.8.4.tar.gz
- 修改Hadoop配置文件
#Master
cd hadoop-2.8.4/etc/hadoop
vim hadoop-env.sh
export JAVA_HOME=/usr/local/jdk1.8.0_171 #我这里确保变量能读取到,就没有改,使用自带的。
vim yarn-env.sh
export JAVA_HOME=/usr/local/jdk1.8.0_171 #我这里确保变量能读取到,就没有改,使用自带的。
vim slaves
slave1
slave2
#vim core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.205.60:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop-2.8.4/tmp</value>
</property>
</configuration>
#vim hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop-2.8.4/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop-2.8.4/dfs/data</value>
</property>
<property>
<name>dfs.repliction</name>
<value>3</value>
</property>
</configuration>
#vim mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
#vim yarn-site.xml
<configuration>
<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>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8035</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
</configuration>
- 配置环境变量
#Master、Slave1、Slave2
vim ~/.bashrc
HADOOP_HOME=/usr/local/hadoop-2.8.4
export PATH=$PATH:$HADOOP_HOME/bin
#刷新环境变量
1.root用户
source ~/.bashrc
2.如果存在多个hadoop环境,使用用户区分hadoop环境的就需要
source /home/hadoop1/.bashrc #hadoop1是用户,在bashrc下定义的1版本的变量关系
source /home/hadoop2/.bashrc #hadoop2是用户,在bashrc下定义的2版本的变量关系
- 拷贝安装包
#Master
ansible Vmware -m synchronize -a 'src=/usr/local/hadoop-2.8.4 dest=/usr/local/'
#创建临时目录和文件目录
mkdir -p /usr/local/hadoop-2.8.4/tmp /usr/local/hadoop-2.8.4/dfs/name /usr/local/hadoop-2.8.4/dfs/data
ansible Vmware -m shell -a 'mkdir -p /usr/local/hadoop-2.8.4/tmp /usr/local/hadoop-2.8.4/dfs/name /usr/local/hadoop-2.8.4/dfs/data'
#部分报错的解决办法
setup 1.#/usr/bin/hadoop:行27: /usr/bin/../libexec/hadoop-config.sh: 没有那个文件或目录
ln -s /usr/local/hadoop-2.8.4/libexec/hadoop-config.sh /usr/libexec/hadoop-config.sh
- 启动集群
#Master
#初始化Namenode
hadoop namenode -format #ll命令查看是不是对应版本的hadoop,否则使用绝对路径
启动集群
/usr/local/hadoop-2.8.4/sbin/start-all.sh
- 集群状态
jps
#Master
[root@master /]# jps
25587 ResourceManager
29301 Jps
28971 SecondaryNameNode
28765 NameNode
#Slave1
[root@slave1 /]# jps
16108 DataNode
16221 NodeManager
16333 Jps
#Slave2
[root@slave2 /]#
15560 DataNode
15673 NodeManager
15785 Jps
监控网页
http://master:8088操作命令
和Hadoop1.0操作命令是一样的关闭集群
/usr/local/hadoop-2.8.4/sbin/stop-all.sh
三、总结
如果遇到25587 – process information unavailable
处理办法:通常是由于强行kill进程导致的,停止集群后删除/tmp下所有文件重新启动即可。
参考链接:https://cloud.tencent.com/info/df7ae0097ee4f3c362df1ac399a37fc4.html错误: 找不到或无法加载主类 org.apache.hadoop.util.PlatformName
错误: 找不到或无法加载主类 org.apache.hadoop.fs.FsShell
处理办法:我的原因是因为,从机忘记删掉/usr/bin/hadoop(默认指向1.2版本hadoop),导致无法加载到2.8.4版本的hadoop。删掉/usr/bin/hadoop就好。