Table of Contents
0.环境说明
1)Ubuntu版本:16.04
2)Hadoop版本:2.7.7
3) Java版本:1.8.0_212
1. Java安装
1)更新包源
sudo apt-get update
2) 安装jdk
sudo apt-get install default-jdk
3) 查看安装位置
update-alternatives --config java
4)设置环境变量
sudo vim /etc/profile
5)末尾添加(路径以实际安装路径为主)
export JAVA_HOME="/usr/lib/jvm/java-8-oracle"
export PATH=$JAVA_HOME/bin:$PATH
6)使得修改生效
source /etc/profile
7)检查设置是否成功
echo $JAVA_HOME
2. Hadoop 安装
2.1 新建hd用户
1)由于后续操作需要将模式切换为 root
su
#如果忘记root密码,可以先修改
sudo passwd root
2) 创建hd用户
sudo useradd -mk /home/hd -s/bin/bash hd
3)为sudoer文件添加修改权限
chmod u+w /etc/sudoers
4) 给hd添加sudo 权限
vim /etc/sudoers
#添加以下内容
root ALL=(ALL) ALL
hadoop ALL=(root) NOPASSWD:ALL
5)撤销 sudoers 文件被修改的权限
chmod u+r /etc/sudoers
6)切换到 hd 用户
su hd
7) 创建数据存放目录
mkdir -p /home/hd/data/tmp
2.2 伪分布式模式安装
2.2.1 移动文件
1) 将安装包放到/home/hd目录下,切换目录
cd ~
2)解压
tar -zxvf hadoop-2.7.7.tar.gz
2.2.2 Hadoop配置
1)配置 Hadoop 环境变量
sudo vim /etc/profile
#末尾添加
export HADOOP_HOME="/home/hd/hadoop-2.7.7"
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
2)使得修改生效
source /etc/profile
3)验证 HADOOP_HOME 参数
echo $HADOOP_HOME
4)配置 hadoop-env.sh 文件参数
sudo vim ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh
修改 JAVA_HOME 参数为
export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"
5)配置 mapred-env.sh 文件参数
sudo vim ${HADOOP_HOME}/etc/hadoop/mapred-env.sh
修改 JAVA_HOME 参数为
export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"
6)配置 core-site.xml
vim ${HADOOP_HOME}/etc/hadoop/core-site.xml
修改为:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/data/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:8020</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
7)配置 core-site.xml
vim ${HADOOP_HOME}/etc/hadoop/hdfs-site.xml
修改为:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/opt/data/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/opt/data/tmp/dfs/data</value>
</property>
</configuration>
8)配置 yarn-site.xml
vim ${HADOOP_HOME}/etc/hadoop/yarn-site.xml
修改为:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>ubuntu</value><!--请以实际主机名为准-->
</property>
</configuration>
2.2.3 Hadoop测试
1)格式化HDFS
hdfs namenode -format
2) 启动集群
start-dfs.sh && start-yarn.sh
3)查看是否成功启动服务
jps
4)查看端口号
ss -tnl
5)关闭集群
stop-dfs.sh && stop-yarn.sh
2.3 Hadoop集群模式的安装
2.3.1 添加环境变量
1)编辑文件
sudo vim /etc/profile
#末尾添加
export HADOOP_HOME="/home/hd/hadoop-2.7.7"
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_PREFIX=$HADOOP_HOME
export CLASSPATH=$CLASSPATH:.:$HADOOP_HOME/bin
2) 使得修改生效
source /etc/profile
3)验证 HADOOP_HOME 参数
echo $HADOOP_HOME
2.3.2 配置环境文件
1)配置 mapred-env.sh 文件参数
sudo vim ${HADOOP_HOME}/etc/hadoop/mapred-env.sh
#添加 JAVA_HOME 参数,请以实际的JAVA_HOME为准
export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"
2)配置 yarn-env.sh 文件参数
sudo vim ${HADOOP_HOME}/etc/hadoop/yarn-env.sh
#添加 JAVA_HOME 参数,请以实际的JAVA_HOME为准
export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"
3)hadoop里面hadoop-env.sh文件里面的java路径设置
sudo vim ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh
#添加 JAVA_HOME 参数,请以实际的JAVA_HOME为准
export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"
2.3.3 修改主机名
1)在三台机器上修改 /etc/hostname 分别修改主机名
sudo vim /etc/hostname
#分别修改主机名
master 节点:master
slave1 节点: slave1
slave2 节点: slave2
3)修改 /etc/hosts
sudo vim /etc/hosts
#添加内容(请以实际的IP地址为准)
192.168.219.51 master
192.168.219.55 slave1
192.168.219.56 slave2
2.3.4 设置 SSH 无密码登录
1)在三台机器上同时生成公钥和私钥, 一路回车,都设置为默认值.
cd ~
ssh-keygen -t rsa
2)在master机器上执行命令,将生成的公钥添加到授权文件
cat .ssh/id_rsa.pub >> .ssh/authorized_keys
3)在slave1上执行命令,将slave1生成的公钥文件复制到master节点
scp ~/.ssh/id_rsa.pub hd@master:~/.ssh/id_rsa.pub.s1
4)在slave2上执行命令,将slave2生成的公钥文件复制到master节点
scp ~/.ssh/id_rsa.pub hd@master:~/.ssh/id_rsa.pub.s2
5)在master上将slave1和salve2的授权文件追加到master的文件中
cat ~/.ssh/id_rsa.pub.s1 >> ~/.ssh/authorized_keys && cat ~/.ssh/id_rsa.pub.s2 >> ~/.ssh/authorized_keys
6)分发公钥
#在master节点上分发到其他两个slave节点上
scp ~/.ssh/authorized_keys hd@slave1:~/.ssh
scp ~/.ssh/authorized_keys hd@slave2:~/.ssh
7)测试免密登录情况
2.3.5 配置 hadoop 的配置文件
0)建议通过同时打开多个shell进行多台主机同时配置
1)配置 core-site.xml
vim ${HADOOP_HOME}/etc/hadoop/core-site.xml
#修改为
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/data/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
2)配置 core-site.xml
vim ${HADOOP_HOME}/etc/hadoop/hdfs-site.xml
#修改为
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/opt/data/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/opt/data/tmp/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
</configuration>
3)配置 yarn-site.xml
vim ${HADOOP_HOME}/etc/hadoop/yarn-site.xml
#修改为
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
</configuration>
4)配置 mapred-site.xml
#复制模板
cp ${HADOOP_HOME}/etc/hadoop/mapred-site.xml.template ${HADOOP_HOME}/etc/hadoop/mapred-site.xml
#编辑配置文件
vim ${HADOOP_HOME}/etc/hadoop/mapred-site.xml
#修改为
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
5)配置复制
向 slave1 和 slave2 节点复制 hadoop2.6.5 整个目录至相同的位置,如果此前的修改都是同时在三个节点上相应文件上进行修改,则此步骤不用。
2.3.6 格式化文件系统
1)执行命令
hdfs namenode -format
2)格式化成功的标志
3) 常见错误
java.io.IOException: Cannot create directory /opt/data/tmp/dfs/name/current
权限问题,hd用户对opt目录没有操作权限,赋予权限即可
chmod 777 /opt
2.3.7 系统测试
1) 启动集群
start-dfs.sh && start-yarn.sh
2) 查看进程
4)查看端口号
ss -tnl
3)登录web服务
#请以你实际的主机ip为准
http://192.168.219.51:50070
4)登录yarn服务
#请以你实际的主机ip为准
http://192.168.219.51:8088/
5)停止集群
stop-dfs.sh && stop-yarn.sh