本次安装 hadoop版本为2.7.4,单节点安装。注意,在安装hadoop前要先安装jdk并配置好环境变量。单机版hadoop不需要zookeeper。
1. 上传hadoop压缩包文件到服务器上去(主机名centos1,ip 192.168.100.100),或者直接从官网wget方式下载
2. 将压缩文件解压缩到/home/koushengrui/app目录中,重命名为hadoop目录,修改配置文件(配置文件在etc/hadoop目录中)。
第一个:hadoop-env.sh
vi hadoop-env.sh
修改
export JAVA_HOME=${JAVA_HOME}
为
export JAVA_HOME=/home/koushengrui/app/jdk1.8.0_144
这一步是必须的,实测 如果不在hadoop-env.sh文件中显式指定JAVA_HOME的话,启动hdfs时会报找不到JAVA_HOME错误。
第二个:core-site.xml
<!-- 指定hadoop所使用的文件系统(URI格式,hdfs的主节点namenode的地址) -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://centos1:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/koushengrui/app/hadoop/data</value>
</property>
第三个:hdfs-site.xml
<!-- 指定hdfs副本的数量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
第四个:mapred-site.xml
mv mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
<!-- 指定mapreduce运行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
第五个:yarn-site.xml
<!-- 指定yarn主节点resourcemanager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>centos1</value>
</property>
<!-- reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
第六个:salves
当前salves文件内容为localhost,表示会去localhost启动datanode,因为是单节点安装,所以localhost是可以的,也可以改为127.0.0.1或者192.168.100.100或者centos1.
如果为集群部署,则内容应为所有datanode所在的主机ip或者主机名。
3. 将hadoop添加到环境变量
vi /etc/proflie
export HADOOP_HOME=/home/koushengrui/app/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
4. 格式化namenode
用root身份, hdfs namenode -format
格式化之后,上面core-site.xml配置的hadoop.tmp.dir对应的/home/koushengrui/app/hadoop/data目录中会生成生成一些文件夹及文件,其中
/home/koushengrui/app/hadoop/data/dfs/name/current/fsimage.ckpt_0000000000000000000为维护元数据的文件。
注意,如果hadoop.tmp.dir值有二次更改的话,在启动hdfs之前要先格式化namenode,否则namenode起不来。当然,格式化之后之前存的元数据都会消失,所以hadoop.tmp.dir值配置好之后就别再改了。
5. 启动hdfs start-dfs.sh
使用jps命令验证是否启动成功,如果有NameNode、SecondaryNameNode、datanode进程,则hdfs启动成功。
http://192.168.100.100:50070 (HDFS管理界面)。如果是hadoop3.x,则管理端口是9870。
6.启动yarn start-yarn.sh
使用jps命令验证是否启动成功,如果有ResourceManager、NodeManager进程,则yarn启动成功。
http://192.168.100.100:8088 (yarn管理界面)。hadoop3.x管理端口不变。
跑一个自带的求圆周率的mapreduce小程序:
hadoop jar hadoop-mapreduce-examples-2.7.4.jar pi 3 3
7. 启动hdfs和yarn的时候要输入主机密码,集群多的话可能会超时,所以需要配置ssh免密登陆
hdfs的实现思想:
hdfs是通过分布式集群来存储文件,并对外提供一个虚拟的目录结构以供客户端访问
文件存储到hdfs集群中去的时候是被切分成block的(默认128M),文件的block存放在若干台datanode节点上
hdfs文件系统中的文件与真实的block之间有映射关系,由namenode管理
每一个block在集群中会存储多个副本(dfs.replication配置项),好处是可以提高数据的可靠性,还可以提高访问的并发能力