本文以伪分布式模式搭建hadoop
1、三种安装模式:
- 单机模式:无法使用HDFS,只能使用MapReduce,主要目的是在本机测试mapreduce代码
- 伪分布式模式:使用一台机器,使用多个线程模拟多台真实机器,模拟真实的分布式环境
- 完全分布式模式:用多台机器(虚拟机)来完成部署集群
2、修改主机名
使用主机名代替ip,更易配置。
- vim /etc/hosts
127.0.0.1 localhost
::1 localhost
192.168.101.100 hadoop01
- vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=hadoop01
- 判断/etc/hostname文件是否存在,若存在则修改主机名 vim /etc/hostname
hadoop01
- 重启:reboot
3、配置免密登录
不配置免密登录,启动hadoop时,需要输入密码,很繁琐。配置步骤如下:
- 生成秘钥:ssh-keygen,一直回车即可。
- 把秘钥发送给自己:ssh-copy-id root@hadoop01
4、关闭防火墙
此处使用的centeros7版本,关闭防火墙使用命令为:systemctl stop firewalld
详情见文章:
5、下载并解压hadoop压缩包
- 下载:链接 :https://pan.baidu.com/s/1r5SgRD4Bi2VdaldI-wxwcw 提取码:8mg1
- 解压:tar -ixf hadoop-2.7.1_64bit.tar.gz
解压后hadoop目录如下:
6、修改etc/hadoop/ 目录下的配置文件
- vim hadoop-env.sh
修改JAVA_HOME,HADOOP_CONF_DIR,并执行 source hadoop-env.sh 命令,让配置立即生效。
#指定jdk的安装路径,尽管环境变量PATH配置了JAVA_HOME,但hadoop也需要配置
export JAVA_HOME=/usr/java/jdk1.8.0_172-amd64
#hadoop配置文件存放路径
export HADOOP_CONF_DIR=/opt/hadoop-2.7.1/etc/hadoop
- vim core-site.xml
<configuration>
<property>
<!--用来指定hdfs的老大,namenode的地址-->
<name>fs.default.name</name>
<value>hdfs://hadoop01:9000</value>
</property>
<property>
<!--用来指定hadoop运行时产生文件的存放目录。注意目录是要真实存在的,若没有则自己创建-->
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop-2.7.1/tmp</value>
</property>
<!--value的时间单位是分钟,如果配置成0,表示不开启HDFS的回收站
1440=24*60,表示的一天的回收间隔,即文件在回收站存在一天后,被清空-->
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
</configuration>
- vim hdfs-site.xml
<configuration>
<!--指定hdfs保存数据副本的数量,包括自己,默认值是3-->
<!--如果是伪分布模式,此值是1,因为只有一台服务器-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!--设置hdfs的操作权限,false表示任何用户都可以在hdfs上操作文件-->
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
- vim mapred-site.xml
先查看当前目录下是否存在文件 mapred-site.xml,若没有则把模板复制一份,复制命令如下:cp mapred-site.xml.template mapred-site.xml
<configuration>
<!--指定mapreduce运行在yarn上-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
- vim yarn-site.xml
<configuration>
<!--指定yarn的老大 resoucemanager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop01</value>
</property>
<!--NodeManager获取数据的方式-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
- vim slaves
从分布式的角度来看,datanode是从,namenode是主。若有多个datanode则往下写多个即可。
对于伪分布式配置,只能配置为自己。
hadoop01
- vim /etc/profile
启动hadoop的命令在bin和sbin目录里,为了方便启动,则把bin和sbin目录配置到环境变量。
在文件末尾添加如下内容:jkd和hadoop的配置。
最后执行命令执 source /etc/profile 让配置立即生效。
#JDK安装目录
JAVA_HOME=/usr/java/jdk1.8.0_172-amd64
#hadoop的安装目录
HADOOP_HOME=/opt/hadoop-2.7.1
PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME PATH CLASSPATH HADOOP_HOME
7、格式化
第一次启动hadoop需要先格式化,格式化命令:hadoop namenode -format
若不成功可以重启linux再执行命令,注意检查自己的ip,jdk,配置文件是否正确。
若打印信息如下,则表示格式化成功。
8、启动以及关闭
进入hadoop的sbin目录,可以看到很多可以使用的命令
- 启动:sh start-dfs.sh 启动后输入命令 jps 查看是否有如下三个进程,若有则表示成功。