如何在Linux下安装Hadoop
本教程使用的是在Ubuntu14.04 64位下安装Hadoop2.7.7
参考林子雨老师Hadoop3.1.3安装教程_单机/伪分布式配置https://dblab.xmu.edu.cn/blog/2441-2/
可能要用到的:
- 查看Ubuntu版本
$ cat /etc/issue
代码运行结果:
- 更换软件源
系统>软件和更新>下载自>在列表中选择想要选择的服务器>
输入密码>重新载入>执行sudo apt-get update
1. 创建Hadoop用户
增加一个名为 hadoop 的用户,首先按 ctrl+alt+t 打开终端窗口,输入如下命令创建新用户 :
$ sudo useradd -m hadoop -s/bin/bash
2. 为新创建的Hadoop用户设置密码
$ sudo passwd hadoop
3. 为Hadoop用户增加管理员权限
$ sudo adduser hadoop sudo
4. 更新apt
用 hadoop 用户登录后,我们先更新一下 apt,后续我们使用 apt 安装软件,如果没更新可能有一些软件安装不了,执行如下命令:
$ sudo apt-get update
到这步显示有错误,忘了干什么了 好像我先忽略继续往下进行
5.更改配置文件
$ sudo apt-get install vim
6.安装SSH、配置SSH无密码登陆
$ sudo apt-get install openssh-server
此时会有如下提示(SSH首次登陆提示),输入 yes 。然后按提示输入密码 hadoop,这样就登陆到本机了.
登录到本机:
SSH无密码登陆比较方便,这里我没有配置无密码登陆。
首先退出刚才的 ssh,就回到了我们原先的终端窗口,然后利用 ssh-keygen 生成密钥,并将密钥加入到授权中:
1.exit # 退出刚才的 ssh localhost
2.cd ~/.ssh/ # 若没有该目录,请先执行一次ssh localhost
3.ssh-keygen -t rsa # 会有提示,都按回车就可以
4.cat ./id_rsa.pub >> ./authorized_keys # 加入授权
7.安装Java环境
Java环境可以选择Oracle的JDK,或是OpenJDK,按照http://wiki.apache.org.hadoop/HadoopJavaVersion中说的安装OpenJDK7
8.寻找到相应的安装路径,为了接下来配置JAVA_HOME环境变量
9.配置 JAVA_HOME 环境变量
10.让环境变量生效,并检验是否设置正确
检验:
设置好后我们来检验一下是否设置正确:
echo $JAVA_HOME # 检验变量值
java -version
$JAVA_HOME/bin/java -version # 与直接执行 java -version 一样
11.安装Hadoop2
通过http://mirrors.cnnic.cn/apache/hadoop/common/ 下载Hadoop2.7.7
将hadoop解压到/user/local/中
将文件名改成hadoop
修改权限
输入如下命令来检查 Hadoop 是否可用,成功会显示 Hadoop 版本信息
Hadoop伪分布式配置
Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-site.xml
修改配置文件 core-site.xml (通过 gedit 编辑会比较方便: gedit ./etc/hadoop/core-site.xml),将当中的
<configuration>
</configuration>
修改为下面配置:
<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>
</configuration>
配置完成后,执行 NameNode 的格式化:
cd /usr/local/hadoop
./bin/hdfs namenode -format
成功的话,会看到 “successfully formatted” 的提示
接着开启 NameNode 和 DataNode 守护进程
cd /usr/local/hadoop
./sbin/start-dfs.sh
- 启动 Hadoop 时提示 Could not resolve hostname
如果启动 Hadoop 时遇到输出非常多“ssh: Could not resolve hostname xxx”的异常情况,首先按键盘的 ctrl + c 中断启动,然后在 ~/.bashrc 中,增加如下两行内容(设置过程与 JAVA_HOME 变量一样,其中 HADOOP_HOME 为 Hadoop 的安装目录):
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
保存后,务必执行 source ~/.bashrc 使变量设置生效,然后再次执行 ./sbin/start-dfs.sh 启动 Hadoop.
启动完成后,可以通过命令 jps 来判断是否成功启动,若成功启动则会列出如下进程: “NameNode”、”DataNode” 和 “SecondaryNameNode”(如果 SecondaryNameNode 没有启动,请运行 sbin/stop-dfs.sh 关闭进程,然后再次尝试启动尝试)。如果没有 NameNode 或 DataNode ,那就是配置不成功,请仔细检查之前步骤,或通过查看启动日志排查原因。