hadoop入门(一)——部署伪分布式模式
hadoop三种部署模式
很多小伙伴可能在搭建hadoop平台的时候踩到各种坑,而且各种教程不一,那么我们在搭建hadoop平台的时候我们首先先了解一下什么呢?就是hadoop部署的三种模式,以及这三种模式的区别和用法。
单机模式
- 使用本地文件系统,而不是分布式文件系统
- hadoop不会启动namenode、datanode、jobtracker、tasktracker等守护进程,map和reduce任务作为同一个进程的不同部分来执行的
伪分布式模式(适合新手学习)
- 在一台主机模拟多主机
- hadoop启动namenode、datanode、jobtracker、tasktracker等守护进程,这些守护进程都在同一台机器上执行,是相互独立的java进程
- hadoop使用的是分布式系统,各个作业也都是由jobtracker服务来管理独立的进程。在单机模式上增加了代码调试功能,允许检查内存使用情况,hdfs输入输出,以及其他的守护进程交互。类似于完全分布式系统,因此,这种模式常用来测试hadoop程序的执行是否正确。
完全分布式模式(需要资源比较多)
- hadoop的守护进程运行在由多台主机搭建的集群上,是真正的集群环境
- 在所有的主机上安装jdk和hadoop,组成相互连通的网络
- 在主机间设置ssh免密码登录,把从各节点生成的公钥添加到主节点的信任列表
部署伪分布式模式
- 创建hadoop用户
添加用户
sudo useradd -m hadoop -s /bin/bash
设置密码
sudo passwd hadoop
添加管理员权限
sudo adduser hadoop sudo
添加管理员权限也可以执行命令sudo visudo
在root ALL=(ALL) ALL
下面添加:
hadoop ALL=(ALL) ALL
如果是 hadoop ALL=(ALL) NOPASSWD:ALL
则使用sudo时不需要输入用户密码
- 安装SSH并配置SSH无密码登录
sudo apt-get update //更新apt
sudo apt-get install openssh-server //安装SSH server
ssh localhost //需要输入密码
配置无密码登录,先键入exit
退出连接
cd ~/.ssh/
ssh-keygen -t rsa //遇到提示,一路回车即可
cat ./id_rsa.pub >> ./authorized_keys //加入授权
再次尝试ssh localhost
,如果不需要密码登录,即为成功
3. 下载hadoop和java工具包,并解压
在用户目录下创建目录opt,opt下面新建modules、software、app三个目录
分别将压缩包上传到opt/app目录下,然后进行解压
tar -zxvf app/jdk-8u211-linux-x64.tar.gz -C modules
tar -zxvf app/hadoop-3.1.2.tar.gz -C software
- 配置java环境
执行命令:
vim ~/.bashrc
写入第一行
export JAVA_HOME=/home/hadoop/opt/modules/jdk1.8.0_211
让环境变量生效
source ~/.bashrc
检查是否配置正确
3. 配置hadoop
cd opt/software/hadoop-3.1.2/
检查hadoop是否正确配置
4. hadoop伪分布式配置
cd /opt/software/hadoop-3.1.2/etc/hadoop/
配置core-site.xml,末尾添加
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop/opt/software/hadoop-3.1.2/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9082</value>
</property>
</configuration>
配置hadoop-env.sh,找到被注释的JAVA_HOME
export JAVA_HOME=/home/hadoop/opt/modules/jdk1.8.0_211
配置hdfs-site.xml,末尾添加
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/opt/software/hadoop-3.1.2/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/opt/software/hadoop-3.1.2/tmp/dfs/data</value>
</property>
<property>
<name>dfs.http.address</name>
<value>127.0.0.1:50070</value>
</property>
</configuration>
- 格式化namenode,启动namenode和datanode
格式化namenode,如果出现末尾出现success表示成功
/home/hadoop/opt/software/hadoop-3.1.2/bin/hdfs namenode -format
启动namenode和datanode
/home/hadoop/opt/software/hadoop-3.1.2/sbin/start-dfs.sh
- 测试是否成功搭建
访问http://127.0.0.1:50070
期间遇到的问题及解决方案:
问题1. ubuntu切换目录麻烦,vim编辑不方便
解决办法:ubuntu安装frp服务,windows安装coreFTP,编辑和保存配置文件非常方便
问题2. namenode格式化失败,/sbin/start-dfs.sh
解决:./sbin/start-dfs.sh
非常低级的错误,还有ssh配置失败也会导致namenode格式化失败
问题3. 启动namenode和datanode失败,需要root用户启动。而用sudo也失败,因为sudo用户没有配置和启动ssh
解决:hadoop-env.sh多配置了以下内容,注释即可
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
当你的才华还撑不起你的野心的时候,你就应该静下心来学习。当你的能力还驾驭不了你的目标的时候,你就应该沉下心来历练。问问自己,想要怎样的人生。
java和hadoop工具包:
链接:https://pan.baidu.com/s/1wFqnbpS663bBzKDnZnH1ug
提取码:rjy9
复制这段内容后打开百度网盘手机App,操作更方便哦
参考:
[1]. https://blog.csdn.net/guomei_eros/article/details/79513597