环境:
hadoop 3.0.3
VMware+Ubuntu 16.04两台(或多台)
JDK 1.8
一、装好Linux虚拟机,大概步骤如下:
命名随便,为了方便区分,主节点取名master,从节点1取名slave1,从节点2取名slave2。。。。
为了以后ip地址不变,网络适配器选择桥接模式。
二、装好后,查询各节点ip(命令:ifconfig):
我这里各ip为:
192.168.43.82 master
192.168.43.148 slave
三、对主节点(master)操作:
1.更改/etc/hostname 机器的名字,改为master
sudo vi /etc/hostname
2.更改机器名字和ip的对应关系
sudo vi /etc/hosts
更改内容如下(如果有多台从节点需要全部写入这里):
127.0.0.1 localhost
#127.0.1.1 master
192.168.43.82 master
192.168.43.148 slave
3.重启虚拟机,可以看到命令行已经由master@ubuntu变成master@master了。
4.拷贝三个文件,可从windows桌面直接拖过去,也可从一台Linux虚拟机复制到本机(install.sh里面包含了jdk的解压与安装,hadoop的解压与安装,环境变量的配置,hdfs,yarn用户的创建等等,可记事本打开查看,为了方便,把这些写成一个脚本)。
下载地址:链接:https://pan.baidu.com/s/1UD49-Ckkn5FnUe850CMkjA 提取码:qjy5
5.下好之后,进到这几个文件的位置,我放在桌面,即cd /home/master/Desktop,然后执行
sudo chmod -R 777 install.sh
sudo chmod -R 777 hadoop-3.0.3.tar
sudo chmod -R 777 jdk-8u91-linux-x64.tar.gz
sudo ./install.sh
6.在hadoop的安装目录构建logs文件并修改权限(用户属于mapred用户,组属于hadoop组 权限是775,注意:hdfs或者yarn用户向logs写东西是不需要权限的或不要求是属于本用户的,但是mapred向下面写的时候要求必须是本用户的时候才能向里面写东西。)
cd /opt/hadoop
sudo mkdir logs
sudo chown -R mapred logs
sudo chgrp -R hadoop logs
sudo chmod 775 -R logs
7.进入etc/hadoop文件
cd /opt/hadoop/etc/hadoop
8.修改hadoop-env.sh文件(设置jdk的加载路径,hadoop的启动脚本要求知道jdk的安装在什么位置,原因hadoop本身是由java开发的)
sudo vi hadoop-env.sh
差不多在这个位置(修改为 export JAVA_HOME=/opt/jdk,修改完wq保存退出,记得把#删了。):
9.修改core-site.xml配置文件
sudo vi core-site.xml
修改内容如下(此处ip地址为主节点ip,注意修改):
fs.defaultFS
hdfs://192.168.43.82:9000
10.修改hdfs-site.xml文件
sudo vi hdfs-site.xml
修改内容如下(原封不动直接复制):
dfs.nameservices
hadoop-master
dfs.replication
1
dfs.namenode.name.dir
file:/data/hadoop/hdfs/nn
fs.checkpoint.dir
file:/data/hadoop/hdfs/snn
dfs.datanode.data.dir
file:/data/hadoop/hdfs/dn
11.修改mapred-site.xml文件(指明管理mapred框架的名字)
sudo vi mapred-site.xml
修改内容如下(原封不动直接复制):
mapreduce.framework.name
yarn
yarn.app.mapreduce.am.env
HADOOP_MAPRED_HOME=/opt/hadoop
mapreduce.map.env
HADOOP_MAPRED_HOME=/opt/hadoop
mapreduce.reduce.env
HADOOP_MAPRED_HOME=/opt/hadoop
12.修改yarn-site.xml文件
sudo vi yarn-site.xml
修改内容如下(注意修改为自己的主节点ip):
yarn.resourcemanager.hostname
192.168.43.82
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.local-dirs
/data/hadoop/yarn/nm
yran.nodemanager.log-dirs
/data/hadoop/yarn/logs
13.修改workers文件(设置集群中从节点的ip,把原来内容删掉,加上从节点的ip)
sudo vi workers
14.建立data目录
sudo mkdir /data
15.在data目录下建立hadoop文件
cd /data
sudo mkdir hadoop
16.在hadoop中建立hdfs和yarn文件夹
cd hadoop
sudo mkdir hdfs yarn
17.在hdfs文件下建立的dn,nn,snn文件夹
cd hdfs
sudo mkdir dn nn snn
18.在yarn下建立logs,nm文件夹
cd ../yarn
sudo mkdir logs nm
19.给hdfs和yarn设置权限(注意命令在哪级目录输入,进入hadoop目录)
cd /data/hadoop
(1)hdfs的所属用户hdfs,所属组hadoop及其子文件也设置
sudo chown -R hdfs hdfs
sudo chgrp -R hadoop hdfs
(2) yarn的所属组hadoop及其子文件
sudo chown -R yarn yarn
sudo chgrp -R hadoop yarn
20.进入data目录,给hadoop目录及所有子目录或文件赋予权限777
cd /data
sudo chmod 777 -R hadoop
21.格式化节点,先进入hdfs用户,再格式化,只格式化一次
su - hdfs(密码hadoop)
hdfs namenode –format
四、对从节点(slave)操作:
1.更改/etc/hostname 机器的名字,改为slave
2.重复 三.2到三.21
五、启动与停止集群:
1.在主节点上切换hdfs用户
启动:hadoop-daemon.sh start namenode
停止:hadoop-daemon.sh stop namenode
2.在主节点上切换yarn用户
启动:yarn-daemon.sh start resourcemanager
停止:yarn-daemon.sh stop resourcemanager
3.在从节点上切换hdfs用户
启动:hadoop-daemon.sh start datanode
停止:hadoop-daemon.sh stop datanode
2.在从节点上切换yarn用户
启动:yarn-daemon.sh start nodemanager
停止:hadoop-daemon.sh stop datanode
六、浏览器输入http://192.168.43.82:9870和http://192.168.43.82:8088进行测试。
七、设置一键启动
在主节点上切换hdfs用户执行如下命令生成明文和密文:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
将铭文拷贝到从节点的需要无密码登陆的机器上去:
ssh-copy-id -i 192.168.43.148
同时拷贝一份到本机:
ssh-copy-id -i localhost
切换yarn用户执行:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
将铭文拷贝到从节点的需要无密码登陆的机器上去:
ssh-copy-id -i 192.168.43.148
验证是否可以无密码登陆
ssh 192.168.43.82
ssh 192.168.43.148
在yarn用户下:
启动yarn集群:start-yarn.sh
关闭yarn集群:stop-yarn.sh
在hdfs用户下:
启动hdfs集群:start-dfs.sh
关闭hdfs集群:stop-dfs.sh
注意:集群的启动是在主节点