hadoop伪分布式部署

一、环境准备

1、创建用户
[root@Hadoop01 ~]# useradd byy
[root@Hadoop01 ~]# su - byy
上一次登录:日 1月 31 14:56:56 CST 2021pts/1 上
2、创建文件夹
[byy@Hadoop01 ~]$ mkdir app data software bin log sourcecode tmp
[byy@Hadoop01 ~]$ ll
total 0
drwxrwxr-x 2 byy byy 6 Nov 27 21:32 app #解压的软件包 软连接
drwxrwxr-x 2 byy byy 6 Nov 27 21:32 data #数据
drwxrwxr-x 2 byy byy 6 Nov 27 21:32 software #软件压缩包
drwxrwxr-x 2 byy byy 6 Nov 27 21:32 bin #第三方的jar
drwxrwxr-x 2 byy byy 6 Nov 27 21:32 log #日志
drwxrwxr-x 2 byy byy 6 Nov 27 21:32 sourcecode #源代码编译
drwxrwxr-x 2 byy byy 6 Nov 27 21:32 tmp #临时文件夹
3、上传软件包
[byy@Hadoop01 ~]$ cd software
[byy@Hadoop01 software]$ rz #回车上传软件压缩包到software文件夹
[byy@Hadoop01 software]$ ll #查看是否已上传
total 424176
-rw-r--r-- 1 byy byy 434354462 Nov 27 21:35 hadoop-2.6.0-cdh5.16.2.tar.gz
4、解压软件压缩包到app中
[byy@Hadoop01 software]$ tar -zxvf hadoop-2.6.0-cdh5.16.2.tar.gz -C ../app/
[byy@Hadoop01 app]$ cd ../app
[byy@Hadoop01 app]$ ll #查看是否已解压到app文件夹
total 0
drwxr-xr-x 14 byy byy 4096 Nov 27 21:37 hadoop-2.6.0-cdh5.16.2
5、做软连接
[byy@Hadoop01 app]$ ln -s hadoop-2.6.0-cdh5.16.2 hadoop
[byy@Hadoop01 app]$ ll #查看是否已建立好软连接 
total 0
lrwxrwxrwx 1  byy byy   22 Nov 27 21:39 hadoop -> hadoop-2.6.0-cdh5.16.2
drwxr-xr-x 14 byy byy 4096 Nov 27 21:37 hadoop-2.6.0-cdh5.16.2
6、java软件安装(安装官网推荐的版本)
创建文件夹
[byy@Hadoop01 app]$ su - root
[root@Hadoop01 ~]# mkdir ../usr/java #在根目录下创建文件夹
上传软件包
[root@Hadoop01 ~] cd /usr/java
[root@Hadoop01 java] rz #上传jdk.8u45-linux-x64.gz压缩包到此目录
[root@Hadoop01 java] ll
-rw-r--r-- 1 root root 173271626 Nov 27 21:43 jdk.8u45-linux-x64.gz
解压压缩包到当前目录
[root@Hadoop01 java] tar -xzvf jdk.8u45-linux-x64.gz
[root@Hadoop01 java] ll #查看解压后的文件
总用量 169212
drwxr-xr-x 8   10  143       255 Nov 27 21:45 jdk1.8.0_45
-rw-r--r-- 1 root root 173271626 Nov 27 21:43 jdk.8u45-linux-x64.gz
修正解压后的文件夹的权限
[root@Hadoop01 java] chown root:root jdk-1.8.0.45
[root@Hadoop01 java] ll
drwxr-xr-x 8 root root      4096 Nov 27 21:45 jdk1.8.0_45
-rw-r--r-- 1 root root 173271626 Nov 27 21:43 jdk.8u45-linux-x64.gz
配置环境变量

jdk使用全局环境变量

[root@Hadoop01 /] vim /etc/profile
#在最后一行编辑
export JAVA_HOME=/usr/java/jdk1.8.0_45
export PATH=$JAVA_HOME/bin:$PATH
#保存退出
[root@Hadoop01 /] . /etc/profile #生效环境变量
[root@Hadoop01 /] which java #查看jdk配置是否正确(java的第一个路径应该是/usr/java/jdk1.8.0_45/bin/java)
/usr/java/jdk1.8.0_45/bin/java

hadoop使用用户环境变量

[root@Hadoop01 /] su - byy
[byy@Hadoop01 ~]$ vim ~/.bashrc
export HADOOP_HOME=/home/byy/app/hadoop
#bin下为操作命令如hdfs,sbin下为集群命令如启动、停止
export PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH
#保存退出
[byy@Hadoop01 ~]$ source ./.bashrc
[byy@Hadoop01 ~]$ which hadoop
/home/byy/app/hadoop/bin/hadoop
7、ssh安装

默认已安装

二、伪分布式hadoop安装部署

hadoop三种模式

  • 本地
    在一台单机上运行,没有HDFS,读取本机操作系统的文件。一般不用
  • 伪分布式
    在一台单机上用java进程模仿分布式系统运行中的各节点(NameNode,DataNode,JobTracker,TaskTracker,SecondaryNameNode),即每个进程在一台机器上进行,但都是独立的java进程。学习、测试使用
    分布式存储:集群中的结点由一个NameNode和若干个DataNode组成,另有一个SecondaryNameNode作为NameNode的备份。
    分布式计算:集群中的结点由一个JobTracker和若干个TaskTracker组成,JobTracker负责任务的调度,TaskTracker负责并行执行任务。
    TaskTracker必须运行在DataNode上,这样便于数据的本地计算;JobTracker和NameNode则无须在同一台机器上。
    一个机器上,既当namenode,又当datanode,或者说既是jobtracker,又是tasktracker。没有所谓的在多台机器上进行真正的分布式计算,故称为"伪分布式"。
  • 完全分布式(集群模式)
    在多台机器上运行各节点,生产上使用

hadoop配置文件路径(软连接文件夹中)
/home/byy/app/hadoop/etc/hadoop/

注:配置文件汇总的<!–…–>代表注释,可以删掉,建议不管就行了,以免删错

1、JAVA_HOME显性配置

编辑hadoop-env.sh文件

[root@Hadoop01 /] su - byy
[byy@Hadoop01 ~]$ cd ~/app/hadoop/etc/hadoop/
[byy@Hadoop01 hadoop]$ vim hadoop-env.sh
#修改export JAVA_HOME=${JAVA_HOME},显性指定jdk路径
export JAVA_HOME=/usr/java/jdk1.8.0_45
#保存退出
2、伪分布式文件配置
配置core-site.xml文件
[root@Hadoop01 /]# vim /home/byy/app/hadoop/etc/hadoop/core-site.xml

如下编辑脚本,注意将Hadoop01改为自己的机器名(为此需要编辑/etc/hosts文件:前两行内容切记不要改变;确认最后一行是内网ip 你的机器名)

<configuration>
#配置NameNode地址
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://Hadoop01:9000</value>
	</property>
#配置数据在Linux上保存的位置(配置前要自己建一个hadoop下的tmp文件夹),默认是/tmp但这个目录每次重启后会删掉数据,自己新建一个存放目录
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/home/app/hadoop/tmp</value>
	</property>
</configuration>
配置hdfs-site.xml文件
[root@Hadoop01 /]# vim /home/byy/app/hadoop/etc/hadoop/hdfs-site.xml

如下编辑脚本

#配置数据块的冗余度,伪分布是1,全分布小于等于数据节点个数,且一般不要超过三个
<configuration>
	<property>
		<name>dfs.replication</name>
		<value>1</value>
	</property>
</configuration>
配置mapred-site.xml.template文件

需要先将模板文件拷贝一份,编辑拷贝的文件

[root@Hadoop01 /]# cd /home/byy/hadoop/etc/hadoop/
[root@Hadoop01 hadoop]# cp mapred-site.xml.template mapred-site.xml
[root@Hadoop0hadoop /]# vim mapred-site.xml

如下编辑脚本

#MR运行的框架 hadoop2以后可以使用yarn
<configuration>
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>
</configuration>
配置yarn-site.xml文件
[root@Hadoop0hadoop /]# vim yarn-site.xml

如下编辑脚本

<configuration>
#NodeManager运行MR程序方式
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>
#云服务器配置yarn的主节点:Hadoop01改为你自己的机器名,为防止病毒或挖矿,修改8088默认端口
	<property>
		<name>yarn.resourcemanager.webapp.address</name>
		<value>Hadoop01:38088</value>
	</property>
#虚拟机配置yarn的主节点:Hadoop01改为你自己的机器名
	<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>Hadoop01</value>
	</property>
</configuration>
配置slaves文件

配置的DataNode的地址:删除文件中的localhost,改为你的数据节点的主机名

3、ssh无密码信任关系
[root@Hadoop01 hadoop] cd /root
[root@Hadoop01 ~] ll -a 
#查看是否有.ssh文件夹,若有则先备份一下
cp -r .ssh .ssh_cp
#删除.ssh文件夹
[root@Hadoop01 ~] rm -rf .ssh
#ssh秘钥的生成
[root@Hadoop01 ~] ssh-keygen #一直回车
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:seRbEKPAE4wNTLWkU8Fv3Blv6QykkBB2J8cLYu7k5es root@Hadoop01
The key's randomart image is:
+---[RSA 2048]----+
| o*@X=o o        |
| .==X*..oo       |
| oo..*.=++ .     |
|  o.. *o+++      |
| + o .  S=.      |
|  o .    oo      |
|     .  .        |
|    .            |
|   .E            |
+----[SHA256]-----+

[root@Hadoop01 ~] ll -a #会看到.ssh文件夹
drwx------.  2 root root   38 22 23:02 .ssh
#查看.ssh中的文件
[root@Hadoop01 ~] cd .ssh
[root@Hadoop01 ~] ll
-rw------- 1 byy byy 1679 Feb 20  2020 id_rsa #私钥文件
-rw-r--r-- 1 byy byy  395 Apr 16  2020 id_rsa.pub #公钥文件

新建authorized_keys文件

[root@Hadoop01 ~] cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[root@Hadoop01 ~] ll .ssh
总用量 12
-rw-r--r--. 1 root root  395 22 23:22 authorized_keys
-rw-------. 1 root root 1679 22 23:02 id_rsa
-rw-r--r--. 1 root root  395 22 23:02 id_rsa.pub
#修改authorized_keys文件的权限(600)[若用root用户设置,则不需要修正权限]
[root@Hadoop01 ~] chmod 600 ~/.ssh/authorized_keys
[root@Hadoop01 ~] ll .ssh
总用量 12
-rw-------. 1 root root  395 22 23:22 authorized_keys
-rw-------. 1 root root 1679 22 23:02 id_rsa
-rw-r--r--. 1 root root  395 22 23:02 id_rsa.pub

踩坑示例
免密ssh服务器的文件设置成功,还是需要密码,此时查看系统日志看报错(遇到过的错误是/root的用户和用户组出现了问题)
解决措施如下:

#查看系统日志
su - root
tail -f/var/log/secure #报错如下
Authentication refused:bad ownership or modes for directory /root
#查看root目录权限
ls -ls / #root权限如下,查看其属主和属组
4 drwx------  16 1106      4001        4096 Jan 30 12:29 root
#查看这属主和属组是否正常
cat /etc/passwd |grep 1106 #结果搜不到,说明属主不存才
cat /etc/group |grep 4001 #结果搜不到,说明属组不存才
#给/root重新赋属主和属组
chown -R root:root /root #/root下所有文件全部赋予
#重新测试
ssh hadoop01 date #登录成功

配置多台机器SSH相互通信信任参考链接:
http://blog.itpub.net/30089851/viewspace-1992210/

4、hdfs格式化及hdfs启动
[byy@Hadoop01 ~]$ hdfs namenode -format
#第一次启动NameNode和DataNode进程
[byy@Hadoop01 ~]$ start-dfs.sh
#查看当前java进程,启动成功
[byy@Hadoop01 ~]$ jps
151203 DataNode
151530 Jps
150875 NameNode
151406 SecondNameNode

第一次启动时,需要输入几次yes,此时/home/byy/.ssh/know_hosts文件夹里边生成了各进程启动对应的秘钥,所以第二次启动就不需要输入yes了
当ssh秘钥改变后,ssh时会报错说know_hosts文件中存在一个旧的记录,此时删除know_hosts中的相关信息,重新生成一次

#第二次启动所有进程
[byy@Hadoop01 ~]$ stop-dfs.sh
[byy@Hadoop01 ~]$ start-all.sh
5714 NameNode
6661 NodeManager
7143 Jps
6541 ResourceManager
6014 SecondaryNameNode
5839 DataNode

java进程出现process information unavailable的解决措施
/tmp中找到hsperfdata_前缀的目录,并找出PID对应的文件并且删除即可。

[root@Hadoop01 hadoop] cd /tmp
[root@Hadoop01 tmp] ll |grep hsper
drwxr-xr-x. 2 byy  byy       6 25 22:57 hsperfdata_byy
drwxr-xr-x. 2 root root     66 25 22:51 hsperfdata_root
[root@Hadoop01 tmp] cd hsperfdata_byy
[root@Hadoop01 hsperfdata_byy]# ls
4149  4310  6559  6854
[root@Hadoop01 hsperfdata_byy]# rm 4149  4310  6559  6854
rm:是否删除普通文件 "4149"?y
rm:是否删除普通文件 "4310"?y
rm:是否删除普通文件 "6559"?y
rm:是否删除普通文件 "6854"?y
5、查看端口,浏览界面

查看进程pid

[root@Hadoop01 ~]# jps
5714 NameNode
6661 NodeManager
7143 Jps
6541 ResourceManager
6014 SecondaryNameNode
5839 DataNode

hdfs界面
查看端口号

[root@Hadoop01 ~]# netstat -nlp |grep 5714
tcp        0      0 0.0.0.0:50070           0.0.0.0:*               LISTEN      5714/java           
tcp        0      0 192.168.186.129:8020    0.0.0.0:*               LISTEN      5714/java

在这里插入图片描述
yarn界面
查看端口号

[root@Hadoop01 ~]# netstat -nlp |grep 6541
tcp6       0      0 192.168.186.129:8088    :::*                    LISTEN      6541/java           
tcp6       0      0 192.168.186.129:8030    :::*                    LISTEN      6541/java           
tcp6       0      0 192.168.186.129:8031    :::*                    LISTEN      6541/java           
tcp6       0      0 192.168.186.129:8032    :::*                    LISTEN      6541/java           
tcp6       0      0 192.168.186.129:8033    :::*                    LISTEN      6541/java

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值