BigData3:Hadoop之伪分布式安装部署

各种部署方式及特点

  • 单机模式:不能使用HDFS,只能使用MapReduce,所以单机模式最主要的目的是在本机调试MapReduce代码
  • 伪分布式模式:用多个线程模拟多台真实机器,即模拟真正的分布式环境
  • 完全分布式:用多台机器(或启动多个虚拟机)来完成部署集群

这里先用伪分布式来进行练习,仅用一台虚拟机

安装步骤如下

  1. 关闭防火墙
 #执行:
 service iptables stop  
 #这个指令关闭完防火墙后,如果重启,防火墙会重新建立
 #所以,如果想重启后防火墙还关闭,
 #需额外执行:
 chkconfig iptables off
  1. 配置主机名
执行:
vim  /etc/sysconfig/network

注意:主机名里不能有下滑线,或者特殊字符 #$,不然会找不到主机导致无法启动
这种方式更改主机名需要重启才能永久生效,因为主机名属于内核参数。
如果不想重启,可以执行:hostname hadoop01。但是这种更改是临时的,重启后会恢复原主机名。
所以可以结合使用。先修改配置文件,然后执行:hostname hadoop01 。可以达到不重启或重启都是主机名的目的
在这里插入图片描述

  1. 配置hosts文件
执行:
vim /etc/hosts

在这里插入图片描述

  1. 配置免秘钥登录
    在这里插入图片描述
#在hadoop01节点执行:
#执行:
ssh-keygen
#然后一直回车

在这里插入图片描述
生成节点的公钥和私钥,生成的文件会自动放在/root/.ssh目录下
在这里插入图片描述

#然后把公钥发往远程机器,比如hadoop01向hadoop01发送
#执行:
ssh-copy-id  root@hadoop01
#此时,hadoop02节点就是把收到的hadoop秘钥保存在
/root/.ssh/authorized_keys 
#这个文件里,这个文件相当于访问白名单,
#凡是在此白名单存储的秘钥对应的机器,登录时都是免密码登录的。
#当hadoop01再次通过ssh远程登录hadoop01时,发现不需要输入密码了。

在hadoop02节点执行上述上述步骤,让hadoop02节点连接hadoop01免密码登录

  1. 配置自己节点登录的免密码登录
    如果是单机的伪分布式环境,节点需要登录自己节点,
    即hadoop01要登录hadoop01
    但是此时是需要输入密码的,所以要在hadoop01节点上
#执行:
ssh-copy-id root@hadoop01
  1. 安装和配置jdk
#1)执行:  
vi  /etc/profile 
#2)在尾行添加
##set java environment
JAVA_HOME=/usr/local/src/java/jdk1.8.0
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME  PATH CLASSPATH
#保存退出
#3)使更改的配置立即生效
source /etc/profile 
#4)查看JDK版本信息。如显示1.8.0证明成功。
java -version 
  1. 上传和解压hadoop安装包
#执行:
tar -xvf  hadoop……
#目录说明:
#bin目录:命令脚本
#etc/hadoop:存放hadoop的配置文件
#lib目录:hadoop运行的依赖jar包
#sbin目录:启动和关闭hadoop等命令都在这里
#libexec目录:存放的也是hadoop命令,但一般不常用
#最常用的就是bin和etc目录
  1. 配置hadoop-env.sh
#这个文件里写的是hadoop的环境变量,主要修改hadoop的java_home路径
#切换到  
etc/hadoop目录
#执行:
vim hadoop-env.sh
#修改java_home路径和hadoop_conf_dir 路径

在这里插入图片描述

#然后执行:
source hadoop-env.sh 
#让配置立即生效
  1. 修改core-site.xml
#在etc/hadoop目录下
#执行:
vim core-site.xml

配置如下:
在这里插入图片描述

<configuration>
	<!--用来指定hdfs的老大,namenode的地址-->
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://hadoop01:9000<value>
	</property>
	<!--用来指定hadoop运行时产生文件的存放目录-->
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/home/software/hadoop-2.7.1/tmp</value>
	</property>
</configuration>

  1. 修改 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>
  1. 修改 mapred-site.xml
    在这里插入图片描述
<configuration>
<property>
<!--指定mapreduce运行在yarn上-->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

<!--yarn是资源协调工具-->

  1. 修改yarn-site.xml
    在这里插入图片描述
<configuration>
<!-- Site specific YARN configuration properties -->
	<property>
	<!--指定yarn的老大 resoucemanager的地址-->
		<name>yarn.resourcemanager.hostname</name>
		<value>hadoop01</value>
	</property>
	<property>
	<!--NodeManager获取数据的方式-->
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>
</configuration>

  1. 配置slaves文件
    在这里插入图片描述
  2. 配置hadoop的环境变量
    在这里插入图片描述
JAVA_HOME=/home/software/jdk1.8
HADOOP_HOME=/home/software/hadoop-2.7.1
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export JAVA_HOME PATH CLASSPATH HADOOP_HOME
  1. 格式化namenode
#执行:
hadoop namenode -format
#如果不好使,可以重启linux
#当出现:successfully,证明格式化成功

在这里插入图片描述

启动hadoop

#切换到sbin目录,
#执行:
start-dfs.sh  
#启动hadoop相关的服务

在这里插入图片描述
注:如果在启动时,报错:Cannot find configuration directory: /etc/hadoop
解决办法:
编辑 etc/hadoop下的 hadoop-env.sh 文件,添加如下配置信息:
export HADOOP_CONF_DIR=/home/software/hadoop-2.7.1/etc/hadoop
在这里插入图片描述
然后执行 source hadoop-env.sh 使配置立即生效

执行:start-yarn.sh 启动yarn相关的服务
在这里插入图片描述
在浏览器访问:
192.168.234.21:50070来访问hadoop的管理页面

在这里插入图片描述

启动失败的解决办法

常见错误
1.执行Hadoop指令,比如格式化:hadoop namenode -format
报:command找不到错误
检查:/etc/profile的Hadoop配置
2.少HFDS相关进程,比如少namenode,datanode,
可以去Hadoop 安装目录下的logs目录,查看对应进程的启动日志文件。
解决方法:①先停止HDFS相关的所有的进程(stop-dfs.sh 或 kill -9)
②再启动HDFS(start-dfs.sh)

另外一种解决方式:①先停止HDFS相关的所有的进程 ②删除tmp(元数据目录)再创建一个新的 ③需要做一次格式化指令:hadoop namenode -format
④启动HDFS

关于Hadoop的伪分布式安装配置,如果有问题的小伙伴可以随时在评论区提问

发布了39 篇原创文章 · 获赞 15 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/sinat_35667067/article/details/104239104