本次主要是想通过阿里云服务器和VM虚拟机搭建一个完全分布式的集群出来,在之前都是通过VM克隆虚拟机总感觉不够真实,所以在了解到“飞天加速计划” 之后就萌生了这个想法。笔者现在作为计科专业的大三学生,之前在学校有学习过关于Hadoop相关的学习,所以本次在搭建的过程中,没有很大的困难问题,不过在搭建完成之后还是有部分问题和预想的功能暂未完成。
搭建过程:
1. 获取linux环境
- 本次租用了阿里云服务器(ContOS7.4)
2. 访问服务器
- 在租用之后可以通过阿里云的管理控制台点击远程连接直接使用,在此之前需要设置好服务器的访问密码等等。
- 除了直接通过阿里云提供的浏览器方式访问,我选择使用XShell工具对服务器进行操作,好处是可以直接通过Xttp上传文件。
3 .配置JDK环境
- JDK(JDK1.8.0_linux)
关于JDK直接在官网或者浏览器中可以找到相关的下载,由于是linux系统,那么安装肯定与windows安装方式不同。
1、上传下载好的压缩包到服务器中,我选择的路径是/opt/software存放安装压缩包
/opt/module存放软件路径,目的是为了方便管理。
2、使用tar命令解压压缩包,tar-zxvf xxx.tar -C /opt/module/
3、配置JDK环境变量
指令:vim /etc/profile
打开文件,在文件最下方添加环境变量,保存退出(!wq)
#JAVA_HOME export JAVA_HOME=/opt/module/jdk1.8.0_171 export PATH=$PATH:$JAVA_HOME/bin # 注:本段不是xml文件,只是为了展示
3、加载文件 source /etc/profile
输入java -version 检查是否配置加载成功
4. 配置Hadoop
1、同JDK一样,下载文件,上传到服务器中解压
2、配置环境变量
同JDK一样配置 /etc/profile
#HADOOP_HOME export HADOOP_HOME=/opt/module/hadoop-2.6.5 export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin
3、配置Hadoop
- 进入Hadoop解压后的文件路径下进入 配置文件路径 /hadoop/etc/hadoop/
- vim hadoop-env.sh 配置JDK
# The java implementation to use. export JAVA_HOME=/opt/module/jdk1.8.0_171
- vim core-site.xml 配置
<configuration><!-- 指定HDFS中NameNode的地址 --><property><name>fs.defaultFS</name><value>hdfs://notting:9000</value></property><!-- 指定Hadoop运行时产生文件的存储目录 --><property><name>hadoop.tmp.dir</name><value>/opt/module/hadoop-2.6.5/data/tmp</value></property></configuration>
- vim hdfs-site.xml 配置副本数量、主节点地址
<configuration><!-- 指定HDFS副本的数量 --><property><name>dfs.replication</name><value>3</value></property><property><name>dfs.namenode.secondary.http-address</name><value>aliyun101:50080</value></property><!-- 如果是通过公网IP访问阿里云上内网搭建的集群 --><property><name>dfs.client.use.datanode.hostname</name><value>true</value><description>only cofig in clients</description></property><property><name>dfs.hosts.exclude</name><value>/opt/module/hadoop2.6.5/conf/exclude</value><description>拒绝加入集群的节点列表</description></property></configuration>
- vim yarn-env.sh 配置JDK
# some Java parameters export JAVA_HOME=/opt/module/jdk1.8.0_171
- vim yarn-site.xml 配置yran资源调度器
<configuration><!-- Reducer获取数据的方式 --><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><!-- 指定YARN的ResourceManager的地址 --><property><name>yarn.resourcemanager.hostname</name><value>aliyun101</value></property></configuration>#此处的aliyun101是我自己电脑的vm的虚拟机
- (对mapred-site.xml.template重新命名为) mapred-site.xml
- mv mapred-site.xml.template mapred-site.xml
- vim mapred-site.xml
<configuration><!-- 指定MR运行在YARN上 --><property><name>mapreduce.framework.name</name><value>yarn</value></property></configuration>
- 执行格式化,hdfs namenode -format
执行完成之后,集群就可以通过命令的方式启动,不能随便进行多次格式化,可能导致节点的启动失败
重复以上步骤,在vm虚拟机中也配置一台这样的环境,到这里,集群就算是简单搭建完成。下面对集群进行启动和访问
输入集群启动命令:sbin/start-dfs.sh
启动Yarn:sbin/start-yarn.sh
输入JPS查看进程是否启动:
此时未启动aliyun101节点
进入ip:50070查看集群状态
自此。一个简单的单节点就完成了(实际上还有两台虚拟机未启动,单配置相同,在启动之后,可以在网页上查看到节点状态才算基本完成)
总结
虽然集群的简单搭建算是勉强完成,但是在实际的情况中还有以下问题未解决
集群群起功能为实现
在我进行集群启动时,出现了无法访问子节点的地址从而启动节点进程的问题,在尝试了ssh分发配置失败之后,查询了相关的信息和在寻求帮助的过程中了解到,由于阿里云服务器防火墙的关系,我使用的公网ip的方式是不能直接访问服务器,需要我进行网络的其他相关配置,但是由于网络基础,所以暂未解决,只能通过单节点启动命令启动各个节点进程。但在集群管理页面可以正常查看节点的状态。
Hbase、Zookeeper未安装完成
在本次的计划中还计划了安装Hbase和Zookeeper,但由于部分原因还暂未完成搭建,在接下来的时间,我继续完成这个计划
设想功能
除了程序的安装,本次的目的还有一个是想通过服务器搭建一个自己的网站,其中包括个人的小博客,对日常的一些解决技术问题的记录。
通过hbase存储数据,实现网站的登录访问,使用hadoop来做一个属于自己的云盘。
以上的功能预计在22年的7月份之前完成。
最后,感谢 “高校学生在家实践”这个计划,在整个计划的构建和完成中,我也收获到了很多新的知识。期望自己能够早日的完成这个计划。