所有需要的工具:链接: https://pan.baidu.com/s/1zmklr9r9TC7UDn-q0SJ75A 提取码: afdy
VMware没安装的 点这里
本人选用的是jdk8+centos7+hadoop2.7.5+zookeeper3.4.10+hbase1.3.1
已经完成centos安装和jdk安装。克隆(方式一)或者相同方式再创2台(方式二)。
规划3台虚拟机名字和IP地址
hadoop1(192.168.10.10),
hadoop2(192.168.10.11),
hadoop3(192.168.10.12)
Gateway(网关):192.168.10.2
分别修改三台虚拟机主机名和IP地址
方式一:克隆机
克隆机生成自己独特的mac地址
接下来所有内容对于方式一,方式二都一样了:
修改主机名的方式:vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=hadoop2
修改IP地址的方式:
vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static #修改为static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=8ac74c01-1bdb-48ec-a0ee-9637dfa9a937
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.10.10 #IP地址
GATEWAY=192.168.10.2 #三台一样的网关
DNS1=192.168.10.2 #三台一样的DNS
重启网络服务 CentOS7中使用如下命令
systemctl restart network.service
编辑3台机器hosts文件
vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.10 hadoop1 www.hadoop1.com
192.168.10.11 hadoop2 www.hadoop2.com
192.168.10.12 hadoop3 www.hadoop3.com
- 重启三台机器.
- 测试3台机器之前是否可以相互通信
- 用hadoop1分别ping hadoop2,hadoop3:
- 用hadoop2分别ping hadoop1,hadoop3.
- 用hadoop3分别ping hadoop1,hadoop2
三台机器都新建一个hadoop用户并配置sudo权限。
以hadoop为例:
添加hadoop用户
useradd hadoop
给hadoop设置密码
passwd hadoop
给hadoop配置sudo权限(登录为hadoop用户时,手动在命令前加上sudo,sudo可以执行root权限才能执行的命令)
先给目前登录的root用户配置文件修改权限 (该文件连root用户都是只读的.所以要想修改该文件内容,需要先修改一下该文件的权限,给root添加写权限)
chmod u+w /etc/sudoers
vim /etc/sudoers
##
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
#给hadoop用户添加sudo权限
hadoop ALL=(ALL) ALL
## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS
## Allows people in group wheel to run all commands
# %wheel ALL=(ALL) ALL
## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
# 执行sudo权限时不需要输入密码
%hadoop ALL=(ALL) NOPASSWD: ALL
## Allows members of the users group to mount and unmount the
测试sudo权限
目前还是root用户
进入在文件名为hadoop的home下新建一个file1文件
touch /home/file1
切换到hadoop用户
su hadoop
删除/home/file1文件
rm -rf hadoop
结果是删除文件失败,权限异常
rm: cannot remove `/home/file1': Permission denied
给命令前添加sudo来删除
sudo rm -rf /home/file1
在hadoop2,hadoop3上同样的分别新建一个hadoop用户,并配置sudo权限
安装hadoop并配置相关文件
注意切换至hadoop用户
在hadoop的家目录下新建一个apps文件夹
mkdir /home/hadoop/apps
用filezilla传下载的网盘软件包里的hadoop2.7.5
解压hadoop-2.7.5.tar.gz包:
tar -zxvf /home/hadoop/apps/hadoop-2.7.5.tar.gz
进入到hadoop-2.7.5
cd /home/hadoop/apps/hadoop-2.7.5
在/home/hadoop/apps/hadoop-2.7.5新建一个data目录(hadoop参数的数据存放目录)
mkdir /home/hadoop/apps/hadoop-2.7.5/data
配置hadoop-env.sh文件
cd /home/hadoop/apps/hadoop-2.7.5/etc/hadoop/
vim hadoop-env.sh
# set JAVA_HOME in this file, so that it is correctly defined on
# remote nodes.
# The java implementation to use.
#在这里添加JDK安装目录的环境变量,这里我又尝试过 JAVA_HOME=${JAVA_HOME},但是不能起作用,还是老老实实的写吧
export JAVA_HOME=/home/java/jdk1.8.0_231
# The jsvc implementation to use. Jsvc is required to run secure datanodes
配置core-site.xml配置文件
cd /home/hadoop/apps/hadoop-2.7.5/etc/hadoop/
vim core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:9000</value><!--这里hadoop需要换成自己配置的第一台机器的hostname,比如我的是hadoop1,所以我这里写的就是hadoop1-->
</property>
<property>
<name>hadoop.tmp.dir</name>
<!--配置hadoop集群数据存放路径,注意最后不要有空格-->
<value>/home/hadoop/apps/hadoop-2.7.5/data</value>
</property>
</configuration>
设置hdfs-site.xml配置文件
cd /home/hadoop/apps/hadoop-2.7.5/etc/hadoop/
vim hdfs-site.xml
<configuration>
<!--配置副本数量-->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
配置mapred-site.xml配置文件
cd /home/hadoop/apps/hadoop-2.7.5/etc/hadoop/
默认mapred-site.xml不存在,将mapred-site.xml.template改成mapred-site.xml即可
mv mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
<configuration>
<!--指定mapreduce在yarn上运行-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
配置yarn-site.xml配置文件
cd /home/hadoop/apps/hadoop-2.7.5/etc/hadoop/
vim yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop1</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
配置slaves配置文件
cd /home/hadoop/apps/hadoop-2.7.5/etc/hadoop/
vim slaves
#指定datanode
hadoop2
hadoop3
配置hadoop1到hadoop2,hadoop3之间的免密通信,完成这一步操作,需要安装ssh软件,注意 如果机器中没有安装ssh-client软件,先需要安装,如果没有安装软件技能,推荐先了解下linux安装安软的知识.安装步骤如下1,2:
查找适合的软件包:yum list | grep openssh-clients
安装:yum install openssh-clients.x86_64 (openssh-clients.x86_64 是我查找到的结果).
启动hadoop2,hadoop3,并都切换到hadoop用户下.
配置免密登录之前,登录到hadoop2看看效果:
ssh hadoop2
输入密码即可看到@hadoop2即为手动输入密码登录到了hadoop2
在hadoop1的hadoop用户根目录下(注意,必须用hadoop用户来执行),执行以下命令产来密钥对:
cd ~
ssh-keygen -t rsa
将密钥拷贝到hadoop2,hadoop3:
cd .ssh #.ssh是生成密钥对时产生的文件夹
ssh-copy-id hadoop1 #拷贝到hadoop1(hadoop1就是当前的机器,当前机器也需要设置免密登录)
ssh-copy-id hadoop2 #拷贝到hadoop2
ssh-copy-id hadoop3 #拷贝到hadoop3
拷贝到hadoop2的截图如下:
再来输入
ssh hadoop2
直接登录不用手动输入密码,直接就登录成功了.记得退出登录exit.
配置hadoop软件的环境变量:
配置之前:输入:
which hadoop
发现是找不到hadoop这个命令的.
在/etc/profile文件中添加hadoop的环境变量
sudo vim /etc/profile #因为只有root用户才能编辑该文件,所以hadoop想要编辑,需要用sudo权限:
```
export JAVA_HOME=/home/java/jdk1.8.0_231
#申明hadoop的路径变量
export HADOOP_HOME=/home/hadoop/apps/hadoop-2.7.5
#在之前配置JAVA的环境变量之后追加hadoop的环境变量
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
```
source /etc/profile #让环境变量生效
验证配置是否成功:which hadoop
结果如上表示配置成功.
将已经配置好的hadoop整个文件包拷贝到hadoop2,hadoop3,这里需要注意的是hadoop2和hadoop3中即将放置hadoop包的路径需要保持一致,如果不一致,需要在上面配置的那几个hadoop配置文件中修改有路径的地方
1.在hadoop2,hadoop3的hadoop家目录下新建一个apps目录.
2.scp -r /home/hadoop/apps/hadoop-2.7.5 hadoop2:/home/hadoop/apps/
3.scp -r /home/hadoop/apps/hadoop-2.7.5 hadoop3:/home/hadoop/apps/
注意hadoop1同步文件夹到hadoop2命令
scp -r 本机文件目录 hadoop2: 文件目录
如:scp -r /home/hadoop/apps/hadoop-2.7.5 hadoop2:/home/hadoop/apps/
根据上面配置hadoop软件的环境变量一样去hadoop2和hadoop3上配置好hadoop的环境变量
- 分别重启3台机器.
- 在hadoop1上,用户hadoop用户,格式化hadoop 的HDFS(文件系统),第一次使用需要格式化:
hadoop namenode -format
在hadoop1上启动hdfs文件系统:
start-dfs.sh
待启动完成,再验证是否有该有进程:
jps
在hadoop1上启动yarn集群
start-yarn.sh
jps
使用浏览器查看集群状态:http://192.168.10.10:8088
如果没法访问,查看防火墙状态:
sudo service iptables status
关闭防火墙:
sudo service iptables stop
查看HDFS文件系统状态:http://192.168.10.10:50070