步骤一:vi /etc/sysconfig/network-scripts/ifcfg-ens33 修改虚拟机IP地址
vi /etc/hosts
192.168.10.10 master
192.168.10.11 slave1
192.168.10.12 slave2 记录各虚拟机IP地址,
vi /etc/hostname
master slave1 slave2
互相ping,使可以互相连接。
reboot
步骤二:systemctl stop firewalld 关闭防火墙 reboot
#ssh-keygen -t rsa生成密钥对
cd .ssh
cat id_rsa.pub
查看密钥
在.ssh下编辑.
vi authorized_keys
将密钥复制
保存退出
scp authorized_keys root@slave1:/root/.ssh/
scp authorized_keys root@slave2:/root/.ssh/
三台虚拟机互相连接
步骤三:
拖拽压缩包
# tar -xvf jdk-8u161-linux-x64.tar.gz
# mv jdk1.8.0_161/ /usr/local/jdk1.8
# cd /usr/local
在local目录下编辑
#vi /etc/profile 在末尾添加以下的内容:
export JAVA_HOME=/usr/local/jdk1.8/
export JRE_HOME=/usr/local/jdk1.8/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
之后执行命令:#source /etc/profile
参考命令:
#scp -r /usr/local/jdk1.8 root@slave1:/usr/local/
其中-r参数表示递归复制该目录下的所有目录和文件。
#scp -r /usr/local/jdk1.8 root@slave2:/usr/local/
#scp /etc/profile root@slave1:/etc/profile
#scp /etc/profile root@slave2:/etc/profile 从master虚拟机拷贝/etc/profile到slave1和slave2并执行
#source /etc/profile
步骤四、安装hadoop完全分布式集群
# tar -zxvf hadoop-2.6.0.tar.gz
移动Hadoop
mv hadoop-2.6.0/ /usr/local/hadoop注:在普通用户下移动
cd /usr/local/hadoop
mkdir tmp
vi /etc/profile
export HADOOP_INSTALL=/usr/local/hadoop
export PATH=${HADOOP_INSTALL}/bin:${HADOOP_INSTALL}/sbin:${PATH}
export HADOOP_MAPRED_HOME=${HADOOP_INSTALL}
export HADOOP_COMMON_HOME=${HADOOP_INSTALL}
export HADOOP_HDFS_HOME=${HADOOP_INSTALL}
export YARN_HOME=${HADOOP_INSTALLL}
cd /usr/local/hadoop/etc/hadoop
注意这里写的路径要对应实际的路径,下同
注意这两个value的值,路径要修改为实际的路径,hdfs://master主机的主机名。
<configuration>
<property><!--hadoop临时文件的存放目录-->
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
<property><!--NameNode 的URI默认端口为8020-->
<name>fs.default.name</name>
<value>hdfs://master</value>
</property>
</configuration>
注意这里的value要改成实际情况中的路径,数据需要备份的数量不能大于集群的机器数量,默认为3,由于只准备了两台slave虚拟机,所以已经改成2了。
<configuration>
<property><!--namenode持久存储名字空间及事务日志的本地文件系统路径-->
<name>dfs.name.dir</name>
<value>/usr/local/hadoop/dfs/name</value>
</property>
<property><!--DataNode存放块数据的本地文件系统路径-->
<name>dfs.data.dir</name>
<value>/usr/local/hadoop/dfs/data</value>
</property>
<property><!--数据需要备份的数量,不能大于集群的机器数量,默认为3-->
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
注意这里需要修改主机名为master虚拟机的主机名,其它的用默认的就行了。
<configuration>
<!-- Site specific YARN configuration properties -->
<property><!--NodeManager上运行的附属服务,用于运行mapreduce-->
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property> <!--ResourceManager 对客户端暴露的地址-->
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property><!--ResourceManager 对ApplicationMaster暴露的地址-->
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property><!--ResourceManager 对NodeManager暴露的地址-->
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property><!--ResourceManager 对管理员暴露的地址-->
<name>yarn.resourcemanager.master.address</name>
<value>master:8033</value>
</property>
<property><!--ResourceManager 对外web暴露的地址,可在浏览器查看-->
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
</configuration>
(7)vim mapred-site.xml (拷贝 mapred-site.xml.template)
#cp mapred-site.xml.template mapred-site.xml
#vim mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
(8) vi slaves
Slave1
Slave2
#scp -r /usr/local/hadoop root@slave1:/usr/local/
#scp -r /usr/local/hadoop root@slave2:/usr/local/
scp /etc/profile root@slave1:/etc/profile
#source /etc/profile
步骤五、初始化hdfs,启动hadoop集群(20分)
查看防火墙systemctl status firewalld
首先在进入相应的目录,例如:cd /usr/local/hadoop/bin
执行命令:./hadoop namenode -format
不报错的话,即执行成功,如图:
格式化成功后,可以在看到在hadoop/dfs/name/目录多了一个current目录
可以先进入相应的目录,例如:cd /usr/local/hadoop/sbin/
脚本启动hadoop集群: ./start-all.sh
在slave1和slave2中用jps检查是否成功启动。
这时可以用浏览器访问网页内容
停止集群 ./stop-all.sh
步骤六:#hdfs dfs -ls / 可以查看hdfs的根目录。
# hdfs dfs -mkdir /input 在根目录建立input目录
hdfs dfs -put /root/anaconda-ks.cfg /input
注意关闭防火墙
参考示例:注意路径可能不同,要写实际的路径。
# hadoop jar hadoop-mapreduce-examples-2.6.0.jar wordcount /input/* /output
使用hdfs dfs -ls 命令查看wordcount程序运行结果目录
#hdfs dfs -ls / output
使用hdfs dfs -cat命令查看wordcount程序运行结果内容
# hdfs dfs -cat /output/part-r-00000
总结:
在学习中,遇到了各种错误,第一步可能会发生编辑的错误导致在xshell连接失败
还有net 桥连接要配置成功
第二步中容易将authorized_keys建立在其他目录,导致连接的失败
第三步中解压jdk1.8,我在操作的几遍中基本正确
第四步vi编辑要记住指令与
从master虚拟机拷贝hadoop到slave1和slave2中步骤要按部就班
第五步要关闭防火墙,在第二遍中因为防火墙没关导致在网页无法连接
第六步基本无错误
查看防火墙systemctl status firewalld