一.创建hadoop用户
$ sudo useradd -m hadoop -s /bin/bash #创建hadoop用户,并使用/bin/bash作为shell
$ sudo passwd hadoop #为hadoop用户设置密码,之后需要连续输入两次密码
$ sudo adduser hadoop sudo #为hadoop用户增加管理员权限
$ su - hadoop #切换当前用户为用户hadoop
$ sudo apt-get update #更新hadoop用户的apt,方便后面的安装
二.安装SSH,设置SSH无密码登陆
$ sudo apt-get install openssh-server #安装SSH server
$ ssh localhost #登陆SSH,第一次登陆输入yes
$ exit #退出登录的ssh localhost
$ cd ~/.ssh/ #如果没法进入该目录,执行一次ssh localhost
$ ssh-keygen -t rsa
1.输入完 $ ssh-keygen -t rsa 语句以后,需要连续敲击三次回车,如下图
2.回车输入完毕以后,如果出现类似于下图所示的输出,即成功
3.之后再输入
$ cat ./id_rsa.pub >> ./authorized_keys #加入授权
$ ssh localhost #此时已不需密码即可登录localhost,并可见下图。如果失败则可以搜索SSH免密码登录来寻求答案
三.安装jdk1.8
(切换到Hadoop用户后再进行操作,下载JDK到Hadoop用户下)
1.下载jdk
jdk1.8网盘下载
oracle官网全版本JDK下载
2.创建一个目录作为JDK的安装目录,我的目录为 /java
sudo mkdir /java
3.cd到jdk所在目录,移动jdk文件到/Java目录下(或者在jdk所在目录右键打开终端)
sudo mv jdk-8u60-linux-x64.tar.gz /java
4.解压文件
cd /java
tar -zxvf jdk-8u60-linux-x64.tar.gz
5.给JDK配置环境变量
编辑.bashrc文件
$ vi ~/.bashrc
6.打开文件后按i开始编辑
添加如下代码:
export JAVA_HOME=/java/jdk1.8.0_60
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
编辑完成后按Esc退出编辑,shift+zz,保存并退出
7.输入Java -version,显示jdk版本即安装成功
四.安装hadoop-2.9.2
1.先下载hadoop-2.9.2.tar.gz
Hadoop全版本下载链接
2.开始安装
$ sudo tar -zxvf hadoop-2.6.0.tar.gz -C /usr/local #解压到/usr/local目录下
$ cd /usr/local
$ sudo mv hadoop-2.6.0 hadoop #重命名为hadoop
$ sudo chown -R hadoop ./hadoop #修改文件权限
3.给hadoop配置环境变量,将下面代码添加到.bashrc文件:
$ vi ~/.bashrc
export HADOOP_HOME=/usr/local/hadoop
export CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
4.执行source ~/.bashrc使设置生效,并查看hadoop是否安装成功
source ~/.bashrc
hadoop version
五.伪分布式配置
Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-site.xml 。Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。
1.将jdk1.8的路径(export JAVA_HOME=/java/1.8.0-60 )添加到hadoop-env.sh文件
sudo gedit /usr/local/hadoop/etc/hadoop/hadoop-env.sh
2.修改core-site.xml文件
打开文件
sudo gedit /usr/local/hadoop/etc/hadoop/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>
3.修改hdfs-site.xml文件
sudo gedit /usr/local/hadoop/etc/hadoop/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>
</configuration>
4.配置完成,执行NameNode的格式化
cd /usr/local/hadoop
./bin/hdfs namenode -format
5.启动namenode和datanode进程
./sbin/start-dfs.sh
jps
通过命令 jps 来判断是否成功启动,若成功启动则会列出如下进程: “NameNode”、”DataNode” 和 “SecondaryNameNode”
登录错误(作者未出现此错误,未亲测,解决方案来自原文章)
此时也有可能出现要求输入localhost密码的情况 ,如果此时明明输入的是正确的密码却仍无法登入,其原因是由于如果不输入用户名的时候默认的是root用户,但是安全期间ssh服务默认没有开root用户的ssh权限
输入代码:
$vim /etc/ssh/sshd_config
检查PermitRootLogin 后面是否为yes,如果不是,则将该行代码 中PermitRootLogin 后面的内容删除,改为yes,保存。之后输入下列代码重启SSH服务:
$ /etc/init.d/sshd restart
即可正常登入(免密码登录参考第二章)
6.成功启动后,可以访问 Web 界面 http://localhost:50070
查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件。
Hadoop安装结束!
注:本文章参考自这篇博文,由于原文部分操作步骤不是很详细以及其他错误,所以还参考了Ubuntu下JDK的安装和网络上其他文章!