@ubuntu下HADOOP3.3.1的单机和伪分布安装
首先说明本文中主要的安装步骤参考自林子雨老师的《大数据技术原理与应用》一书,本文旨在记录作者按照书中步骤配置hadoop时遇到的一些问题以及版本更迭后出现的问题,同时给出对应的解决方案。
ubuntu下HADOOP3.3.1的单机安装
- 首先在自己的ubuntu系统下新建立一个用户,即创建一个相对隔绝的实验环境(文中默认读者电脑为linux系统)
创建用户的命令如下
$ sudo useradd -m hadoop -s /bin/bash
接着为新用户设置密码
$ sudo passwd hadoop
最后为新用户添加管理员权限
$ sudo adduser hadoop sudo
这样一个新的在linux下的hadoop实验用户就建立好了,接下来重启进入实验用户hadoop
$ sudo shutdown -r
linux重启指令
PS:以上操作指令作者在操作中未遇到任何报错,如有读者出现错误,敬请留言
- 更新apt和安装vim编辑器
PS:如果是第一次使用linux系统,建议进行换源操作,此处不多赘述
更新apt命令如下
$ sudo apt-get update
安装vim编辑器命令如下
$ sudo apt-get install vim
在安装时需要确认,在提示处(y/n)输入y即可
- 安装SSH和配置SSH无密码登录
ubuntu系统默认已安装SSH客户端,故这里只需要安装SSH服务端,命令如下:
$ sudo apt-get install openssh-server
同样在遇到确认时输入y
在安装后使用如下命令登入本机:
$ ssh localhost
出现提示后输入yes,并输入本机密码即可登录,可以发现此处每次登录都需要输入密码,所以进行无密码登录配置
退出刚刚的登录
$ exit
利用ssh-keygen生成密钥,并将密钥加入授权,命令如下:
$ cd ~/.ssh/
$ ssh-keygen -t rsa
PS:此处在输入第二行指令后一直按回车enter键即可,不要连续输入额外字符
后续命令如下:
$ cat ./id_rsa.pub >> ./authorized_keys
PS:此处命令一行输完,不要分行
此时再使用 ssh localhost,不需要密码就可以登录
- 安装JAVA环境
PS:这里对JAVA安装包的下载不作过多赘述,文中默认JDK版本为1.8且压缩包下载目录在 ~/下载
执行如下命令创建 “/usr/lib/jvm” 目录来存放文件:
$ cd /usr/lib
$ sudo mkdir jvm
执行如下命令对安装包进行解压:
$ cd ~
$ cd 下载
$ sudo tar -zxvf ./jdk-8u301-linux-x64.tar.gz -C /usr/lib/jvm
解压之后进行环境变量设置:
$ vim ~/.bashrc
在文件开头位置添加如下代码:
PS:进入vim后,按 i 进入编辑状态,在添加完内容后按 Esc 键退出编辑模式,再按 :,输入 wq! 保存并退出 vim
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_301
export JRE_HOME=${
JAVA_HOME}/jre
export CLASSPATH=.:${
JAVA_HOME}/lib:${
JRE_HOME}/lib
export PATH=${
JAVA_HOME}/bin:$PATH
按如上操作保存并退出vim后执行如下命令使文件生效:
$ source ~/.bashrc
这时使用如下命令查看JAVA是否安装配置成功:
$ java -version
至此,基础配置过程结束,接下来进行hadoop的配置
安装单机HADOOP
在运行hadoop单机模式时,所有节点都在同一台机器上,存储采用本地文件系统,并未涉及HDFS。
以下安装步骤中均使用HADOOP3.3.1进行实验
在hadoop官网(https://hadoop.apache.org/releases.html)下载3.3.1对应安装包,下载安装包的位置在 ~/下载 或是 ~/Downloads 目录下,安装包名为hadoop-3.3.1.tar.gz,接下来进行安装操作
PS:以下默认安装包被保存在 ~/Downloads
$ sudo tar -zxf ~/Downloads/hadoop-3.3.1.tar.gz -C /usr/local
此时已经将hadoop解压到了指定目录下,接下来对目录名进行修改并赋予权限
$ sudo mv ./hadoop-3.3.1.tar.gz ./hadoop
$ sudo chown -R hadoop ./hadoop
此时就可以用如下命令查看hadoop版本号
$ /usr/local/hadoop/bin/hadoop version
如果返回如下信息,则说明安装成功:
Hadoop 3.3.1
Source code repository https://github.com/apache/hadoop.git -r a3b9c37a397ad4188041dd80621bdeefc46885f2
Compiled by ubuntu on 2021-06-15T05:13Z
Compiled with protoc 3.7.1
From source with checksum 88a4ddb2299aca054416d6b7f81ca55
This command was run using /usr/local/hadoop/share/hadoop/common/hadoop-common-3.3.1.jar
HADOOP伪分布式安装
在分布式安装时,hadoop存储采用的是HDFS,名称节点和数据节点运行在不同的机器上。伪分布式安装是模拟一个集群分布,但集群中只有一个节点,并且名称节点和数据节点均在一台机器上。不过借助一些技术也可以在一台电脑上实现分布式安装,如虚拟机,docker,在下篇文章中将介绍使用docker进行hadoop分布式搭建的过程。
首先对hadoop安装目录中的两个文件( core.site.xml 和 hdfs.site.xml )进行修改
PS:以下涉及的文件路径为 /usr/local/hadoop/etc/hadoop ,使用 cd 指令访问后利用 ls 指令即可查看
修改后的 core.site.xml 内容为
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
修改后的 hdfs.site.xml 内容为:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
<property>
<name>dfs.http.address</name>
<value>127.0.0.1:50070</value>
</property>
</configuration>
此处内容与书中稍有出入,两者均可,仅作参考。
在配置完成后对节点进行初始化:
$ cd /usr/local/hadoop
$ ./bin/hdfs namenode -format
执行后会出现很大一段回复,最后几行看起来很像报错了,此时不要着急,在最后十行回应中寻找 successfully formatted ,只要按照上文正常配置就可以初始化的,如果找不到,再进行debug。
至此,初始化成功后,就可以用如下命令启动HDFS
$ cd /usr/local/hadoop
$ ./sbin/start-dfs.sh
如果出现如下回应:
Starting namenodes on [localhost]
Starting datanodes
Starting secondary namenodes [peryol-ThinkPad-T540p]
接下来再使用如下指令查看所有的JAVA进程:
24297 Jps
24156 SecondaryNameNode
23932 DataNode
23789 NameNode
如果显示四个进程如上正常运行( 数字编号不同无所谓 ),则启动成功,并且可以在浏览器中访问web页面(http://localhost:50070)进行访问,如果按照书中的步骤配置,则访问地址编号(50070)稍有出入。
补充
- 在第一次启动时进行初始化后,再次启动不需要再初始化,如果某些情况需要再次初始化,请提前删除安装目录下的默认文件存储目录(/usr/local/hadoop/tmp),该目录在上文中修改的两个配置文件中设置。
- 如果在使用put指令时出现DataStreamerException报错,首先保证自己的linux系统防火墙处于关闭状态,再次尝试仍报错的情况下对hadoop进行初始化操作,注意事项参考第一点。
- 如果出现其他报错,检查上述步骤中是否有细节处处理错误,比如少打一个空格,指令拼写错误。
最后如有错误,还请大家批评指正。