以前装过单机版Hadoop、伪分布式Hadoop以及分布式的Hadoop,但是都没有做总结,今天刚好又需要装伪分布式Hadoop,所以在此写了一篇伪分布式Hadoop的安装教程。好了废话不多说,直接进入我们今天的主题——伪分布式Hadoop的安装吧。
(1)一台Ubuntu系统(如果还没有装Ubuntu的可以去看我上一篇文章先装Ubuntu哈)
(2)Hadoop安装文件
本文中我安装的是hadoop2.7.1,安装包下载地址链接:https://pan.baidu.com/s/1X1MTERqlVJAF3LGh4jkI-g ,提取码:e1i5
(3)jdk安装包
jdk下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk12-downloads-5295953.html,下载相应版本即可。
(1)更新apt并安装vim编辑器
首先先按ctrl+alt+t打开终端窗口,执行命令:sudo apt-get update
更新apt,如下图所示
更新apt结束后,输入命令:sudo apt-get install vim
安装vim编辑器,在安装的过程中需要输入y并回车,直到vim安装成功,如下图所示。
(2)安装SSH服务并配置SSH无密码登录
由于Ubuntu已经默认安装了SSH client,所以我们还需要安装SSH server即可,输入命令:sudo apt-get install openssh-server
,在安装的过程中需要输入y并回车,直到安装成功,如下图所示。
安装完毕后,我们可以尝试使用SSH登录本机,输入命令:ssh localhost
,首次登录会弹出提示,输入yes,然后按提示输入密码就可以登录本机了。
测试ssh登录成功后,我们输入命令:exit,回到原来的终端。由于每次登都需要输入密码,所以为了方便起见,接下来就进行SSH无密码登录配置:
输入命令:
cd ~/.ssh/ #若提示没有该目录,请执行ssh localhost
再输入命令:
ssh-keygen -t rsa #出现提示按回车
如下图所示为执行上述步骤的截图。
利用 ls
命令可以查看生成的密匙,如下图所示。
将生成的密匙加入授权,输入命令:cat ./id_rsa.pub >> ./authorized_keys
如下图所示。
完成上述步骤后,再利用 ssh localhost
命令测试,发现无需输入密码即可登录,做到这一步,无密码登录就做完了,如下图所示。
由于我之后要在Ubuntu里面安装eclipse,所以我的Java环境选择的是Oracle的JDK。,步骤如下:
(1)将下载好的jdk的安装包复制到下载的文件夹下,如下图所示。
(2)拷贝jdk并解压安装
使用命令:sudo cp /home/chen/下载/jdk-12.0.1_linux-x64_bin.tar.gz /usr/java/
,将jdk拷贝到/usr/java文件夹下。
接下来使用cd /usr/java
进入该文件夹,利用ls
查看文件是否已经拷贝
使用命令:sudo tar -zxvf jdk-12.0.1_linux-x64_bin.tar.gz
解压安装,如下图所示。
(3)配置环境变量
解压完成后可以利用ls查看,可以看到解压生成的文件 jdk-12.0.1,如下图所示。
使用命令:sudo vim /etc/profile
进入到/etc/profile中,并输入以下命令配置jdk环境变量:
export JAVA_HOME=/usr/java/ jdk-12.0.1
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
如下图所示:
保存退出上述文件后,输入命令:source /etc/profile
使环境变量生效。此时如果输入命令:java -version
可以看到jdk安装成功表明成功安装jdk,如果不行的话可以继续配置bashrc,步骤为:
使用命令:vim ~/.bashrc
并在此文件中输入jdk的安装路径:
export JAVA_HOME=/usr/java/ jdk-12.0.1
如下图所示:
退出保存后,可以输入source ~/.bashrc
使环境变量生效,再输入java -version
测试,可以看到已经环境变量已经配置成功,如下图所示。
(1)将下载好的Hadoop的安装包复制到下载的文件夹下,如下图所示。
(2)拷贝文件并解压缩Hadoop文件
使用命令:sudo cp /home/chen/下载/hadoop-2.7.1.tar.gz /usr/local
将hadoop文件复制到/usr/local文件下
使用命令:sudo tar -zxvf hadoop-2.7.1.tar.gz
解压安装hadoop
使用ls
可以查看到解压生成的文件hadoop-2.7.1,如下图所示。
使用命令:sudo mv ./hadoop-2.7.1/ ./hadoop
将文件夹改名为hadoop,如下图所示。
使用命令:sudo chown -R chen ./hadoop/
修改文件权限,如下图所示。
使用命令:cd /usr/local/hadoop
进入hadoop文件,修改两个配置文件core-site.xml和hdfs-site.xml。
(1)core-site.xml文件
使用命令:gedit ./etc/hadoop/core-site.xml
打开core-site.xml文件,
之间修改为下面的配置:
hadoop.tmp.dir
file:/usr/local/hadoop/tmp
Abase for other temporary directories.
fs.defaultFS
hdfs://localhost:9000
(2)配置hdfs-site.xml文件
使用命令:gedit ./etc/hadoop/hdfs-site.xml
打开hdfs-site.xml文件,
之间修改为下面的配置:
dfs.replication
1
dfs.namenode.name.dir
file:/usr/local/hadoop/tmp/dfs/name
dfs.datanode.data.dir
file:/usr/local/hadoop/tmp/dfs/data
(3)格式化namenode
完成伪分布式文件配置之后,必须格式化namenode,输入命令:
./bin/hdfs namenode -format
如果执行成功,可以看到“successfully formatted”和“Exitting with status 0”的提示,如下图所示。
(4)开启namenode和datanode
输入命令:./sbin/start-all.sh
启动hadoop,如出现ssh提示,输入yes即可
(5)查看是否启动成功
输入jps
,如果启动成功则会出现如下进程:“NameNode”,“DataNode”,“SecondaryNameNode”,如下图所示。
补充说明:
如果输入jps
发现DataNode没有启动的话,可以尝试以下方法(这种方法会删除HDFS中原有的所有数据,如果原有的数据很重要,请不要这样做):
./sbin/stop-all.sh #关闭Hadoop
rm -r ./tmp #删除tmp文件
./bin/hdfs namenode -format #重新格式化NameNode #重新格式化NameNode
(6)关闭Hadoop
输入命令:./sbin/stop-all.sh
关闭Hadoop
说明:下次启动Hadoop时,无需格式化NameNode,直接执行./sbin/start-all.sh
即可
在上述步骤中,我们可以发现启动Hadoop时都要进入/usr/local/hadoop目录中,然后再执行 ./sbin/start-all.sh 启动Hadoop,为了方便起见,我们可以给Hadoop配置PATH环境变量,这样就可以直接执行start-all.sh
开启Hadoop。配置环境变量PATH步骤如下:
输入命令:vim ~/.bashrc
并在此文件中添加:
export PATH=$PATH:/usr/local/hadoop/sbin:/usr/local/hadoop/bin
保存退出后,执行source ~/.bashrc
使设置生效,然后就可以尝试利用start-all.sh
命令启动hadoop。
注意:
如果完成上一步之后发现不行,可以继续给profile文件添加环境变量,步骤如下:
输入命令:sudo vim /etc/profile
在profile文件中添加:
export HADOOP_HOME=/usr/local/hadoop
export PATH=$HADOOP_HOME/bin:$PATH:$HADOOP_HOME/sbin:
添加完成后保存并退出,执行source /etc/profile
使设置生效即可