一、基础环境
在 Linux 上安装 Hadoop 之前,需要先安装两个程序:
1.1 安装说明
1. JDK 1.6 或更高版本(本文所提到的安装的是 jdk1.7);(本次服务器已有 1.8)
2. SSH(安全外壳协议),推荐安装 OpenSSH。
下面简述一下安装这两个程序的原因:
1. Hadoop 是用 Java 开发的,Hadoop 的编译及 MapReduce 的运行都需要使用 JDK。
2. Hadoop 需要通过 SSH 来启动 salve 列表中各台主机的守护进程,因此 SSH 也是必须
安装的,即使是安装伪分布式版本(因为 Hadoop 并没有区分集群式和伪分布式)。对于伪
分布式,Hadoop 会采用与集群相同的处理方式,即依次序启动文件 conf/slaves 中记载
的主机上的进程,只不过伪分布式中 salve 为 localhost(即为自身),所以对于伪分布式 H
adoop,SSH 一样是必须的。
1.1 JDK 的安装与配置
见:附一安装方法
第一步:下载 Linux 环境下的 jdk1.8,请去(官网)中下载 jdk 的安装文件
(http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.
html);
由于我的 Linux 是 64 位的,因此我下载 jdk-8u171-linux-x64.tar.gz 文件。
第二步:新建/usr/java 文件夹,将 jdk-8u171-linux-x64.tar.gz 放到该文件夹中,
并将工作目录切换到/usr/java 目录下。
tar -zxvf jdk-8u171-linux-x64.tar.gz
第三步:配置环境变量:
在 vi /etc/profile 底部加入如下内容:
JAVA_HOME=/usr/java/jdk1.8.0_171
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
第四步:使用 source /etc/profile 让 profile 文件立即生效。
第五步:命令测试,
①、使用 javac 命令
②、使用 java -version,出现版本号
二、Host 配置和创建 hadoop 用户
1、由于我搭建 Hadoop 集群包含三台机器,所以需要修改调整各台机器的 hosts 文件配
置,进入/etc/hosts,配置主机名和 ip 的映射,命令如下:
vi /etc/hosts
如果没有足够的权限,可以切换用户为 root。
三台机器的内容统一增加以下 host 配置:
可以通过 hostname 来修改服务器名称为 master、slave1、slave2、slave3
hostname master
192.168.1.249
master
192.168.1.2
slave1
192.168.1.221
slave2
192.168.1.103
slave3
2、在主机 root 用户下
#创建 hadoop 用户,新生成的用户,会在根目录/home/hadoop/下面
useradd hadoop
passwd hadoop
#输入两次密码
同理依次在 slave1、slave2、slave3 中创建相同的用户
su hadoop
#所有配置主机进入 hadoop 用户
3、配置免密 ssh
在主机 master 上输入:
#连续按回车,如果有确定输入:y 或 yes
ssh-keygen -t rsa
完成后进入.ssh 目录
cat
id_rsa.pub >> authorized_keys #将生成的公钥文件写入 authorized_keys 文件
注意:slave1/slave2/slave3 中如果没有.ssh 目录,slave 从机要执行一下 ssh-keygen -t rsa
命令,
scp -r authorized_keys hadoop@192.168.1.2:/home/hadoop/.ssh/#输入密码
scp -r authorized_keys hadoop@192.168.1.221:/home/hadoop/.ssh/
scp -r authorized_keys hadoop@192.168.1.103:/home/hadoop/.ssh/
验证是否成功:在主机 master 上输入:#可依次进入对应从机,无需密码
ssh slave1
输入:exit
ssh slave2
#退出从机
ssh slave3
三、Hadoop 的安装与配置
3.1 创建文件目录
为了便于管理,给 Master 的 hdfs 的 NameNode、DataNode 及临时文件,在用户目录
下创建目录:
/home/hadoop/hadoop/hdfs/name
/home/hadoop/hadoop/hdfs/data
/home/hadoop/hadoop/tmp
然后将这些目录通过 scp 命令拷贝到 Slave1、Slave2、slave3 的相同目录下。
#新建 hadoop 文件夹
#进入文件夹
#新建文件夹
#新建目录
cd /home/hadoop #这是用户目录
mkdir hadoop
cd hadoop
mkdir hdfs tmp
cd hdfs
mkdir name data
#进入/home/hadoop 目录,将 hadoop 复制到另外三台
scp -r hadoop hadoop@slave1:/home/hadoop/
scp -r hadoop hadoop@slave2:/home/hadoop/
scp -r hadoop hadoop@slave3:/home/hadoop/
3.2 下载
#配置了 hosts
首先到 http://archive.apache.org/dist/hadoop/core/hadoop-2.7.1/下载 Hadoop,
我选择 hadoop-2.7.1 的版本,并使用以下命令下载到 Master 机器的
/home/hadoop/hadoop 目录:
wget http://archive.apache.org/dist/hadoop/core/hadoop-2.7.1/hadoop-2.7.1.
tar.gz
然后使用以下命令将 hadoop-2.7.1.tar.gz 解压缩到/home/hadoop/hadoop 目录
tar -zxvf hadoop-2.7.1.tar.gz
修改 hadoop 的所属主
chown -R hadoop:hadoop /home/hadoop/hadoop/hadoop-2.7.1
3.3 配置环境变量
回到/home/hadoop/hadoop 目录,配置 hadoop 环境变量,命令如下:
vi /etc/profile
在/etc/profile 添加如下内容
export HADOOP_HOME=/home/hadoop/hadoop/hadoop-2.7.1
export JAVA_HOME=/usr/local/src/java/jdk1.8.0_171
#注意这里的 java_home 每台机子不一定一样
export JRE_HOME=/usr/local/src/java/jdk1.8.0_171/jre
export CLASSPATH=.:$JAVA_HOME/lib$:JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin/$JAVA_HOME:$PATH:$HAD
OOP_HOME/bin
立刻让 hadoop 环境变量生效,执行如下命令:
source /etc/profile
再使用 hadoop 命令,发现可以有提示了,则表示配置生效了。
3.4 Hadoop 的配置
进入 hadoop-2.7.1 的配置目录:
cd /home/hadoop/hadoop/hadoop-2.7.1/etc/hadoop
依次修改 core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml 以及 sla
ves 文件。
3.4.1 修改 core-site.xml
vi core-site.xml
fs.defaultFS
hdfs://master:7010
dfs.namenode.checkpoint.period
1800
fs.checkpoint.size
67108864
fs.trash.interval
1440
hadoop.tmp.dir
/home/hadoop/hadoop/tmp
io.file.buffer.size
131702
注意:hadoop.tmp.dir 的 value 填写对应前面创建的目录
3.4.2 修改 vim hdfs-site.xml
vi hdfs-site.xml
dfs.namenode.name.dir
file:/home/hadoop/hadoop/hdfs/name
dfs.datanode.data.dir
file:/home/hadoop/hadoop/hdfs/data
dfs.namenode.http-address
master:7020
dfs.namenode.secondary.http-address
slave1:7021
dfs.webhdfs.enabled
true
dfs.replication
3
dfs.datanode.du.reserved
1073741824
dfs.block.size
134217728
dfs.permissions.enabled
false
注意:dfs.namenode.name.dir 和 dfs.datanode.data.dir 的 value 填写对
应前面创建的目录
3.4.3 修改 vim mapred-site.xml