Ubantu16.04下安装伪分布式Hadoop2.9.1
作者:Zhan-bin
日期:2018-6-26
配置过程
1.创建hadoop用户
如果你安装Ubuntu的时候不是用的“hadoop”用户,那么需要增加一个名为hadoop的用户。(其实对用户名没有那么大严格的要求,但是感觉这样挺方便的)
首先按ctrl+alt+t打开终端窗口,或者用xshell进行连接操作,输入如下命令创建新用户。1
sudo useradd -m hadoop -s /bin/bash
这条命令创建了可以登录的hadoop用户,并使用/bin/bash作为shell。
sudo命令
本文中会大量使用到sudo命令。sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时 间,同样也提高了安全性。sudo不是对shell的一个代替,它是面向每个命令的。当使用sudo命令时,就 需要输入您当前使用用户的密码
密码 在Linux的终端中输入密码,终端是不会显示你当前输入的密码,也不会提示你已经输入了多少字符密码。
接着使用如下命令设置密码,可简单的设置为hadoop,按提示输入两次密码:
1 | sudo passwd hadoop |
可为hadoop用户增加管理员权限,方便部署,避免一些对新手来说比较棘手的权限问题1
sudo adduser hadoop sudo
最后使用su hadoop 切换到用户hadoop,或者注销当前用户,选择hadoop登录。
2.更新apt
切换到hadoop用户后,先更新一些apt,后续会使用apt安装软件,如果没更新可能有一些软件安装不了。按ctrl+alt+t打开终端窗口或者使用xshell建立远程连接,执行如下命令:1
sudo apt-get update
后续需要更改一些配置文件,我比较喜欢用的是vim(vi增强版,基本用法相同),建议安装一下(如果你实在还不会用vi,请使用桌面版的ubuntu的gedit,这样可以使用文本编辑器进行修改,并且每次文件更改完成后请关闭整个gedit程序,否则会占用终端。)
1 | sudo apt-get install vim |
安装软件时需要确认,在提示处输入y即可。
还没用过Vim的可以参考下面的vim常用命令介绍
常用的vim操作命令
3.安装SSH并配置SSH免密登陆
集群,单节点模式都需要用到SSH登录(类似于远程登录,你可以登录某台Linux主机,并且在上面运行命令),Ubuntu默认已安装了SSH client,此外还需要安装SSH server:1
sudo apt-get install openssh-server
安装后,可以使用命令登录本机:1
ssh localhost
此时会有如下提示(SSH首次登陆提示),输入yes。然后按提示输入密码hadoop,这样就可以登录到本机。
现在我们设置不用SSH不用密码登陆。
- 1.先退出刚刚的SSH。回到原先的终端窗口,终端输入exit退出。
1
exit
如图所示:
- 2.然后切换路径并使用ssh-keygen生成密钥,并将密钥加入到授权中(如提示 bash: cd: adasd: No such file or directory 请执行一次ssh localhost
1 | cd ~/.ssh/ |
1 | ssh-keygen -t rsa |
效果如下图:
- 3.最后执行 cat ./id_rsa.pub >> ./authorized_keys 加入授权(后面没有任何的提示)
1 | cat ./id_rsa.pub >> ./authorized_keys |
效果:
再次输入ssh localhost 就无需输入密码了,如下图:
4.配置JDK
1.下载JDK
这里我下载的JDK是Oracle的 jdk-8u171-linux-x64.tar.gz 这个版本的
下载地址:JDK下载地址-点击打开
这里我用的是64位系统,如果是32位的请下载x86的jdk
2.将JDK放置需要安装的路径下,并解压文件
这里我将JDK安装到 /usr/local/java/ 中。
先建立目录,执行命令:
1
sudo mkdir -p /usr/local/java
将刚刚下载的JDK复制到java安装路径中,执行命令:
1
2
3cd /home/hadoop/Downloads
sudo cp -r jdk-8u171-linux-x64.tar.gz /usr/local/java/
cd /usr/local/java解压:
1
sudo tar xvzf jdk-8u171-linux-x64.tar.gz
3.配置环境变量
- 先执行cd 切换到根目录下再执行 sudo vim /etc/profile ming ,然后将下面代码插入到文件的末尾 命令如下:
1
2cd
sudo vim /etc/profile
将下面代码插入到文件末尾1
2
3
4JAVA_HOME=/usr/local/java/jdk1.8.0_171
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
export JAVA_HOME
export PATH
- 执行update-alternatives
1 | sudo update-alternatives --install "/usr/bin/java" "java" "/usr/local/java/jdk1.8.0_171/bin/java" 1 |
1 | sudo update-alternatives --set java /usr/local/java/jdk1.8.0_171/bin/java |
重新加载下 /etc/profile1
source /etc/profile
- 测试
执行如下命令测试是否安装成功1
java -version
5.安装hadoop2.9.1
- 这里使用的是hadoop2.9.1 尽量下载stable文件夹里面的稳定版本。下载”stable”下的hadoop-2.x.y.tar.gz这个格式的文件
- 下载地址:hadoop下载地址-点击打开
- 这里将hadoop安装在 /usr/local/ 中:
1
2
3
4sudo tar -zxf ~/Downloads/hadoop-2.9.1.tar.gz -C /usr/local #解压到/usr/local中
cd /usr/local/
sudo mv ./hadoop-2.9.1/ ./hadoop #将文件夹名改为hadoop
sudo chown -R hadoop ./hadoop #修改文件权限
解压之后直接测试有没有装成功1
2cd /usr/local/hadoop
./bin/hadoop version
5.1 配置hadoop环境变量
(1)打开系统文件(添加如下图框框内的内容):
1
vi /etc/profile
(1)在末尾加上hadoop安装路径(这里我的hadoop安装路径是/usr/local/hadoop,如果你的不是这个目录,就把后面的/usr/local/hadoop改为你自己的安装目录)
1
2export HADOOP_INSTALL=/usr/local/hadoop
export HADOOP_HOME=/usr/local/hadoop(2)在PATH的后面加上下面内容:
1
:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
(3)重新加载下profile
1
source /etc/profile
(4)输入“hdfs -version”测试下有没有安装成功
6.配置hadoop伪分布式
Hadoop伪分布式模式是在单机上模拟Hadoop分布式,单机上的分布式并不是真正的伪分布式,而是使用线程模拟分布式。Hadoop本身是无法区分伪分布式和分布式的,两种配置也很相似。唯一不同的地方是伪分布式是在单机器上配置,数据节点和名字节点均是一个机器。
1.修改配置文件
修改/usr/local/hadoop/etc/hadoop中的core-site.xml和hdfs-site.xml文件- 修改core-site.xml,操作路径: /usr/local/hadoop
1
2cd /usr/local/hadoop #先进入到hadoop安装目录
vi ./etc/hadoop/core-site.xml #打开配置文件
修改下面的内容:
改为:
修改 hdfs-site.xml
修改下面的内容:
改为:namenode格式化及测试
执行如下命令进行namenode格式化:1
./bin/hdfs namenode -format
成功的话,会看到”successfully formatted”和”Exitting with status 0”的提示,若为”Exitting with status 1”则是处错。
接着直接开启hadoop所有节点:1
./sbin/start-dfs.sh #start-dfs.sh是个完整的执行文件,中间没有空格键
若出现SSH提示,输入yes即可。
启动时若提示没有找到JAVA_HOME,则需要在hadoop文件下的/etc/hadoop/hadoop-env.sh下将JAVA_HOME重新写一下路径,我也遇到了这个问题。
解决JAVA_HOME问题参考:hadoop启动找不到JAVA_HOME
启动时可能会出现如下WARN提示:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable
WARN提示可以忽略,并不会影响正常使用。
启动完成后,可以通过命令jps来判断是否成功启动,若成功启动则会列出如下进程:
“NameNode”,”DataNode”,”SecondaryNameNode”(如果SecondaryNameNode没有启动,请运行sbin/stop-dfs.sh关闭进行,然后再次尝试启动尝试)。
如果没有NameNode或DataNode,那就是配置不成功,请仔细检查之前步骤,或通过查看启动日志排查原因。(这里有个eclipse是因为我这边开了eclipse,正常时会出现 Jps,SecondaryNameNode,NameNode,DataNode 这4个) 如果是Datanode或者Namenode其中一个启动不了很可能是这两个节点ID不一样。请参考:hadoop namenode或Datanode无法启动解决办法