【前言】之前搭建了hadoop1.x的伪分布式与全分布式,由于hadoop2.x与hadoop1.x在安装和配置上有较大的区别,所以对hadoop2.x的安装也做一个笔记以便日后学习。
话不多说,直接开始。
【1】准备
java1.7的tar包,hadoop2.x的tar包
【2】安装JDK
2.1上传
2.2解压jdk
#创建文件夹
mkdir /usr/java
#解压
tar -zxvf jdk-7u55-linux-i586.tar.gz -C /usr/java/
2.3将java添加到环境变量中
vim /etc/profile
#在文件最后添加
export JAVA_HOME=/usr/java/jdk1.7.0_55
export PATH=$PATH:$JAVA_HOME/bin
#刷新配置
source /etc/profile
#获取配置
echo $JAVA_HOME
【3】安装hadoop2.x
3.1上传
3.2解压hadoop包
tar -zxvf hadoop-2.2.0.tar.gz
cp hadoop-2.2.0 /usr/local
2.3修改配置文件
这里要修改五个配置文件,注意:hadoop2.x的配置文件$HADOOP_HOME/etc/hadoop
(1)hadoop-env.sh
(2)core-site.xml
(3)hdfs-site.xml
(4)mapred-site.xml @(这个文件没有 执行mv mapred-site.xml.template mapred-site.xml命令)
(5)yarn-site.xml
【4】具体配置内容
第一个:hadoop-env.sh
vim hadoop-env.sh
#第27行
export JAVA_HOME=/usr/java/jdk1.7.0_65
第二个:core-site.xml
fs.defaultFS
hdfs://hadoop:9000
hadoop.tmp.dir
/itcast/hadoop-2.4.1/tmp
第三个:hdfs-site.xml
dfs.replication
1
第四个:mapred-site.xml
mapreduce.framework.name
yarn
第五个:yarn-site.xml
yarn.resourcemanager.hostname
itcast01
yarn.nodemanager.aux-services
mapreduce_shuffle
注意:另外如果要使用远程调试hadoop还
需要在$HADOOP_HOME/etc/hadoop/hadoop-env.sh文件的最后添加你想debug的进程
#远程调试namenode
export HADOOP_NAMENODE_OPTS="-agentlib:jdwp=transport=dt_socket,address=8888,server=y,suspend=y"
#远程调试datanode
export HADOOP_DATANODE_OPTS="-agentlib:jdwp=transport=dt_socket,address=9888,server=y,suspend=y"
#远程调试RM
export YARN_RESOURCEMANAGER_OPTS="-agentlib:jdwp=transport=dt_socket,address=10888,server=y,suspend=y"
#远程调试NM
export YARN_NODEMANAGER_OPTS="-agentlib:jdwp=transport=dt_socket,address=10888,server=y,suspend=y"
【5】配置hadoop的相关环境变量
vim /etc/proflie
export JAVA_HOME=/usr/java/jdk1.7.0_65
export HADOOP_HOME=/itcast/hadoop-2.4.1
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
【6】格式化namanode(可以理解为U盘的格式化)
hdfs namenode -format (hadoop namenode -format)
【7】启动hadoop
先启动HDFS
sbin/start-dfs.sh
再启动YARN
sbin/start-yarn.sh
当然,这里也可以用start-all.sh(已过期,但可用)
【8】验证
使用jps命令验证
27408 NameNode
28218 Jps
27643 SecondaryNameNode
28066 NodeManager
27803 ResourceManager
27512 DataNode
http://hadoop:50070 (HDFS管理界面)
http://hadoop:8088 (MR管理界面)
【9】其他问题
有时候我们虽然安装和启动都OK,但是往往在执行hadoop的shell命令时会遇到这样的问题;
[root@hadoop sbin]# hadoop fs -ls /
19/03/04 03:09:23 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
[root@hadoop sbin]#
[root@hadoop sbin]#
这是什么问题呢?
1、有可能是hadoop的预编译包是32bit的,运行在64bit上就会有问题。
2、原来系统预装的glibc库和hadoop期望的版本不一致所导致,所以打印警告信息
解决办法:修改hadoop的log4配置(/etc/hadoop/log4j.properties)
文件中添加
log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR