使用 VMWare构建三台虚拟机模拟真实物理环境
操作系统:CentOS6.5
hadoop搭建需要在三台机器上进行,并且不能是root用户,我们需要创建普通用户,进行下面的操作,三台机器分别都要创建普通用户,而且三台机器上的用户名称是相同的。
注意:以下操作除了修改/etc目录下文件内容,和创建用户等使用root权限,其他所有操作均使用普通用户权限
$>useradd scott
$>passwd scott
打开:VMWare-->编辑-->虚拟网络编辑器-->选中VMB--关闭DHCP
修改eth0文件【/etc/sysconfig/network-scripts/ifcfg-eth0】
$>gedit /etc/sysconfig/network-scripts/ifcfg-eth0
修改内容,没有的选项请补充:
BOOTPROTO=static #设置网卡获得ip地址的方式,可能的选项为static,dhcp或bootp,分别对应静态指定的 ip地址,通过dhcp协议获得的ip地址,通过bootp协议获得的ip地址
ONBOOT=yes
#对应的子网广播地址,保持在同一个网段,末尾是255
BROADCAST=192.168.111.255
#设置自己喜欢的ip地址,保持在同一个网段
IPADDR=192.168.111.152
#网卡对应的网络掩码
NETMASK=255.255.255.0
#保持在同一网段,末尾设置为2
GATEWAY=192.168.111.2
#子网
NETWORK=192.168.111.0
#DNS1服务器地址,保持在同一个网段,末尾设置为2
DNS1=192.168.111.2
这两个GATEWAY,DNS必须按照上面的规则设置,否则是无法ping通的.
$>service network restart
$>su
$>vi /etc/hosts
追加内容:
192.168.111.151 master
重启生效:
$>reboot
修改windows中的VMWare8的网络地址为静态ip,否则windows系统会ping不通虚拟机,也没有办法使用远程工具
说明:不关闭这两个我们的外部网络是不可以访问虚拟机CentOS系统的
永久关闭防火墙命令:
$>chkconfig iptables off
$>chkconfig ip6tables off
查看防火墙状态:
$>chkconfig iptables --list
$>chkconfig ip6tables --list
$>vi /etc/sysconfig/selinux
修改内容:
【
找到:selinux=enforcing
更改为:selinux=disabled
】
$>su
$>reboot
可以使用SSH远程工具把软件上传到我们的虚拟机上,
SSH使用方法请参考博客:
https://blog.csdn.net/lg_49/article/details/80199602
$>tar -zxvf jdk.xxx.tar.gz
$>tar -zxvf hadoop.2.7.3.tar.gz ~/soft
创建软链接便于我们以后的版本切换
$>ln -s jdk.xxx/ jdk
$>ln -s hadoop.xxx/ hadoop
$>cd ~
$>vi .bash_profile 或使用:gedit
在文件最后追加一下内容:
#jdk install
export JAVA_HOME=/home/hyxy/soft/jdk
export PATH=$JAVA_HOME/bin:$PATH
#hadoop install
export HADOOP_HOME=/home/hyxy/soft/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
让环境变量生效:
$>source .bash_profile
说明:
1.我们这文件.bash_profile配置的环境变量,只有当前普通用户组的用户可以使用
2.刷新完之后,只有当前会话可用,建议reboot(重启),使用命令:
$>su
$>reboot
$>su
$>vi /etc/sysconfig/network
修改内容:【HOSTNAME=master】
重启生效:
$>reboot
$>ssh-keygen -t rsa -P ‘’ -f ~/.ssh/id_rsa
说明:
-t:设置生成密钥的算法,采用rsa算法
-P:设置密码,默认为空
-f:设置密钥生成的文件位置,~/.ssh
$>cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$>chmod 600 ~/.ssh/authorized_keys
ssh master
虚拟机克隆参考博客:
https://blog.csdn.net/lg_49/article/details/80412192
注意:三台机器上的ip地址都应是不同的,所以修改
/etc/sysconfig/network-scripts/ifcfg-eth0文件中的IPADDR为相同ip段不同ip地址
$>su
$>vi /etc/sysconfig/network-scripts/ifcfg-eth0
$>su
$>vi /etc/sysconfig/network
修改内容格式例:【HOSTNAME=slave1】
$>su
$>vi /etc/hosts
追加内容:
192.168.111.151 master
192.168.111.152 slave1
192.168.111.153 slave2
主机和克隆机这个文件都要追加
进入~/soft/hadoop/etc/hadoop
使用命令:
cd ~/soft/hadoop/etc/hadoop
添加内容:
fs.defaultFS
hdfs://Master:9000
hadoop.tmp.dir
/home/hyxy/tmp/hadoop
dfs.replication
3
默认块复制。副本数
创建文件时可以指定实际的复制次数。
如果在创建时未指定复制,则使用默认值。
dfs.namenode.name.dir
file://${hadoop.tmp.dir}/dfs/name
dfs.datanode.data.dir
file://${hadoop.tmp.dir}/dfs/data
增加内容:
mapreduce.framework.name
yarn
用于执行MapReduce作业的运行时框架。
可以是local,classic或yarn之一。
mapreduce.jobhistory.address
master:10020
MapReduce JobHistory服务器IPC主机:端口
mapreduce.jobhistory.webapp.address
master:19888
MapReduce JobHistory服务器Web UI主机:端口
< /configuration>
注:发现我们没有这个文件,我们需要把mapred-site.xml .template复制一份,命名成mapred-site.xml ,
执行命令:
cp mapred-site.xml.template mapred-site.xml
增加内容:
yarn.resourcemanager.hostname
master
RM的主机名。
yarn.nodemanager.aux-services
mapreduce_shuffle
以逗号分隔的服务名称应该仅限于服务名称列表
包含a-zA-Z0-9_并且不能以数字开头
把原来的localhost删除,添加:
slave1
slave2
注意:这里是初学者比较纠结的事情,所以不用纠结不管是主机还是从机内容都是一样的,这里也可以是从机的ip地址,因为我们配置了/etc/hosts这个文件,所以我们可以使用名称来找到对应的ip地址。
找到这个位置,并修改
# The java implementation to use.
#export JAVA_HOME=${JAVA_HOME}
修改内容:
export JAVA_HOME=/home/llg/soft/jdk
jdk的安装路径
添加JAVA_HOME
我们需要改变的文件为下面几个:
注意:
1)将hosts文件分发到所有节点
$>scp /etc/hosts hyxy@slave1:/etc/
2) 将hadoop目录分发到所有从节点
$>scp -r ~/soft/hadoop/etc/hadoop hyxy@slave1:~/soft/hadoop/etc
a. 删除hadoop.tmp.dir路径下的所有文件(所有节点)
b. 删除HADOOP_LOG_DIR设置路径下的日志文件(所有节点)
c. 格式化:
$>hdfs namenode -format(主节点)
注:
1.这个是命令使用普通用户执行的,不能使用root权限,会报错,并且是在主节点上运行的
2.如果你的hadoop集群搭建成功了,这个格式化只需要执行一次,你想再格式化之前,请把上面a、b两个文件删除干净
$>start-all.sh
使用命令查看工作进程
$>jps
浏览器上输入:http://192.168.111.151:50070/,出现:
并且可以查看到有两个存活节点,表示搭建成功,如果不成功不要气馁,查看日志文件~/soft/hadoop/logs找到错误
我们可以使用命令:
$>hadoop fs -put ./test.txt /
上传文件到我们hadoop根目录
查看我们是否上传成功:
出现:
$>stop-all.sh
到此我们的hadoop环境就搭建成功了!!!
修改/etc/sudoers文件
$>su
$>visudo
在
root ALL=(ALL) ALL
下插入:
hyxy ALL=(ALL) ALL
2.补充命令:
安全模式解除指令:
$>hadoop dfsadmin -safemode leave
删除hadoop集群文件指令:
$>hadoop fs -rm /test.txt