1.使用VMware创建虚拟机,此处使用4台
hadoop1
hadoop2
hadoop3
hadoop4
2.调通网络环境
设置VM网关,打开 编辑->虚拟网络编辑器,点VMnet8,取消下方使用DHCP服务。。。(如不取消则会动态分配IP)
nat设置里设置网关
之后在windows环境打开网络适配器设置,属性点IPV4,设置其IP,网关,及子网掩码
设置好后可以用ping 查看是否连通
(在win C盘 hosts和Linux的/etc/hosts 可以设置域名映射,之后可直接ping域名)
在Linux设置静态网址
用root用户修改/etc/sysconfig/network-scripts/ifcfg-eth0
把BOOTPROTO="dhcp"改为BOOTPROTO="static"
添加IPADDR="设置固定网址"
NETMASK="子网掩码一般是255.255.255.0"
GATEWAY="网关设为VMnet8的nat设置里的网关"
保存退出
重启network服务
service network restart
3.hadoop需要Java环境,在linux上配置Java环境
将jdk解压到预先设定的文件夹中
然后配置环境变量(在/etc/profile中)
如:
末尾添加
export JAVA_HOME=/home/hadoop1/apps/jdk1.8.0_141
export PATH=$PATH:$JAVA_HOME/bin
完成后source /etc/profile
输入 Java 测试命令是否可以运行
4.安装hadoop
将安装包解压到预先设定的文件夹
对配置文件进行修改
配置文件路径:hadoop-2.8.5/etc/hadoop/
hadoop-env.sh
添加Java路径
export JAVA_HOME=/root/apps/jdk1.8.0_60
core-site.xml
设置放置namenode的机器
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hdp-01:9000</value>
</property>
</configuration>
hdfs-site.xml
设置name和data存放位置,即元数据存放位置和实际存放数据的存放位置(默认在临时文件夹中,最好改掉)
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/root/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/root/dfs/data</value>
</property>
</configuration>
配置好后可以把整个解压后的文件夹放到其他机器
scp -r /root/apps/hadoop-2.8.0 hdp-02:/root/apps/
5.配置hadoop的环境变量
仍在/etc/profile(如不配置则无法直接使用hadoop相关命令)
export JAVA_HOME=/root/apps/jdk1.8.0_60
export HADOOP_HOME=/root/apps/hadoop-2.8.0
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
6.初始化namenode的元数据目录
hadoop namenode -format
启动namenode
hadoop-daemon.sh start namenode
jps可查看是否运行
使用win上的浏览器访问hadoop1:50070
正常情况会出现对应hadoop运行状态及文件目录网页
(在此要注意一定要关闭Linux防火墙,不然访问不到)
关防火墙的命令是
关闭防火墙:service iptables stop
关闭防火墙自启: chkconfig iptables off
7.开启datanode
hadoop-daemon.sh start datanode
测试页面显示与实际启动节点是否对应
8.配置自动化启动
设置免密登录(包括当前这台)
ssh-keygen
ssh-copy-id hadoop1(机器IP)
在/etc/hadoop/slaves
添加要启动的DataNode节点
start-dfs.sh 启动集群
stop-dfs.sh 关闭集群
在hdfs-site.xml添加secondary namenodes(一般不放在namenode服务器上)
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop2:50090</value>
</property>