Hadoop安装
配置SSH免密登录
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
ssh localhost 验证免密登录是否配置成功
安装Java
Java是Hadoop的先决条件。
使用 java -version 命令验证是否已安装了Java。
java -version
如果已经安装了,会显示Java版本信息。未安装可以按以下步骤安装Java
第一步
下载Java JDK
注:安装jdk9,在启动hadoop时可能报waring错误
第二步
解压安装包,移动到“/usr/local/java”下并重命名为‘jdk’。
tar -zxvf jdk-8u151-linux-x64.tar.gz
mkdir /usr/local/java && mv jdk1.8.0_151 /usr/local/java/jdk
第三步
设置PATH和JAVA_HOME变量,将以下两行命令添加到“ ~/.bash_profile”文件中
export JAVA_HOME=/usr/local/java/jdk
export PATH=$PATH:$JAVA_HOME/bin
使环境变量生效
source ~/.bash_profile
通过 java -version 验证是否安装成功
下载Hadoop
Hadoop镜像站点
下载
cd /usr/local
wget 'http://mirrors.shuosc.org/apache/hadoop/common/stable/hadoop-2.9.0.tar.gz'
tar -xzvf hadoop-2.9.0.tar.gz
mv hadoop-2.9.0 hadoop
Hadoop 的分布模式
- 本地/独立模式:下载安装 Hadoop 后默认情况下为此模式。
- 伪分布式模式:单台机器模拟分布式模式。Hadoop 守护每个进程,如 HDFS、yarn、MapReduce 等,都将作为一个独立的java程序运行。这种模式对开发非常有用。
- 分布式模式:完全分布式的最少两台或多台计算机的集群。
本地模式配置
设置Hadoop
添加环境变量 #vi ~/.bash_profile
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
使环境变量生效:source ~/.bash_profile
运行 hadoop version 确保Hadoop安装成功。
默认情况下,Hadoop被配置为在非分布模式的单个机器上运行。
伪分布式模式
在本地模式配置基础上进行:
Hadoop 配置
Hadoop 的配置文件在 “$HADOOP_HOME/etc/hadoop” 目录下
cd $HADOOP_HOME/etc/hadoop
配置文件
hadoop-env.sh
core-site.xml
hdfs-site.xml
mapred-site.xml
在项目目录下查找 find -name *-default.xml 可以获得以上文件的默认配置格式及说明
core-default.xml
hdfs-default.xml
mapred-default.xml
- vim hadoop-env.sh
Hadoop为Java开发,所以要在此文件配置java环境变量。配置hadoop配置文件路径
# export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/usr/local/java/jdk
# export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-'/etc/hadoop'}
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop
- 在 core-site.xml 中的 configuration 标签内添加一下代码
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
<description>临时文件的基础目录</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
<description>HDFS 的访问路径</description>
</property>
- 在 hdfs-site.xml 中添加
<property>
<name>dfs.replication</name>
<value>1</value>
<description>指定块的复制数量</description>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/name</value>
<description>namenode 的存储位置 </description>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/data</value>
<description>datanode 的存储位置</description>
</property>
配置修改说明
Hadoop 的运行方式是由配置文件决定,如果需要从伪分布式模式切换回本地式模式,需要删除 core-site.xml 中的配置项。
虽然伪分布式模式只需要配置 fs.defaultFS 和 dfs.replication 就可以运行,但是若没有配置 hadoop.tmp.dir 参数,则默认使用的临时目录为 /tmp/hadoop-hadoop,而这个目录在重启时有可能被系统清理掉,导致必须重新执行 format 才行。所以我们进行了设置,防止之后的操作报错。
初始化运行
配置完成后使用以下命令格式化NameNode
hdfs namenode -format
到所安装的Hadoop目录下,使用以下命令启动DFS
sbin/start-dfs.sh
输入jps如看到,以下进程已经成功启动
NameNode
DataNode
SecondaryNameNode
可以访问http://localhost:50070查看Hadoop相关状态信息。
注:
- 如SSH链接是需要端口号,请在 hadoop-env.sh 加入下面代码
export HADOOP_SSH_OPTS="-p 12345"