临近毕业,签的公司(国企),和新发offer的公司,都是数据挖掘的岗位,都要求会hadoop、spark等大数据框架,于是自己开始着手学习hadoop,断断续续摸索、看博客等两周时间才搞清楚基本的linux操作(CentOS7),和hadoop的安装。为了写这篇博文,及熟练hadoop分布式的安装,把之前安装好的全部删了,一边安装一边截图写博文。
使用到的工具:
CentOS7、VMare12虚拟机、hadoop-2.6.4、SecureCRT(远程连接虚拟机)、WinSCP(实现win7本机和虚拟机安装的CentOS7的文件互传)
SecureCRT,WinSCP我的百度网盘 密码:283b
如何在虚拟机中安装CentOS这个教程很多,也比较简单,了解linux,我看了兄弟连2014年的视频 密码:9upy,这套视频也将虚拟机也讲了讲,感觉入门这套视频很合适。
安装好一个CentOS之后,是用克隆的方法在之间生产第二个、第三个系统,这是高效的,还有一个技巧就是在重要安装步骤虚拟机上整个快照,防止安装导致系统出问题,快照可以快速使系统恢复。
从这里开始已经安装好了Centos7.
步:修改系统名字,及三个系统的ip和名字的映射。(克隆的机子名字是一样的)
主要是看下面三个
第二步:ping一下,看上面的修改生效没?
第三步:SSH实现三台机子免密码登录。
将产生的密匙scp传递另外两台机子上,实现master到slave1,slave2的免密码登录。
在slave1和slave2上也产生密匙,也就是在slave1和slave2中执行上面产生密匙那个图中的命令,这样才会产生.ssh的目录,将id_dsa.pub 也写到slave1和slave2中.ssh目录下的authorized文件中。实先master到slave1,slave2的免密码登录。
第4步:安装jdk,CentOS7上已经有openjdk的java环境了,但是hadoop不能在这个上面安装,需要卸载的,执行下面语句,显示CentOS的所有java组件
需要将其全部删除
删完之后,在执行上两图中的语句,看是否删除干净。
使用WinSCP将jdk上传。开始解压jdk
然后到Centos7 /etc/profile下修改文件配置,使得jdk生效,执行语句 vim /etc/profile
配置结束之后。执行 source /etc/profile 配置文件生效。
显示以上语句说明,java安装成功。
将java传到其他两台机子上去
scp -r java1.8.0_151 root@slave1:/opt/java (我的安装目录)
scp -r java1.8.0_151 root@slave1:/opt/java (java1.8.0_151是解压后的java目录名)
后将配置文件也传过去,记得在每台传结束之后,还要在slave1及slave2上执行source /etc/profile 使得文件生效。
第五步:安装hadoop和上面相同将hadoop使用WinSCP先上传到master,在master安装hadoop后将安装好的文件传给其他机子。
接着就是配置hadoop了
配置上图中的两个文件。
core-site.xml
个配置决定hadoop的namenode。第二个配置是用于储存hadoop执行过程中的临时文件。
hdfs-sitr.xml
配置每一个文件存储几份,默认的是3,但是我们只安装了2个slave,也就是只能存储2份。
接着就是配置CentOS /etc/profile文件,执行 vim /etc/profile
执行source /etc/profile 上面文件生效。配置 mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value> // 在yarn 上跑mapreduce计算
</property>
<property>
<name>dfs.namenode.secondary.http-address<name>
<value>node2:50090</value> // 定义 secondaryNameNode 在哪个节点上
</property>
</configuration>
配置 yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value> // 配置 yarn 用于跑什么样的任务
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node1</value> // 定义resourcemanager 在哪个借点上
</property>
</configuration>
slaves文件
master 写入配置好的那几个 hostname
node1
node2
配置后一个文件:
hadoop-env.sh.里面有一个JAVA_HOME的路径,将你的java路径写进去,如我的路径是
JAVA_HOME = /opt/java/java1.8.0_151
hadoop安装成功。
将hadoop传到slave1,和slave2两个机器中去。
scp -r hadoop-2.4.6 root@slave1:/usr
scp -r hadoop-2.4.6 root@slave1:/usr
profile配置文件传递
两台机器上分别执行 source /etc/profile
第六步:启动hadoop
先格式化namenode,生成文件,上面已经将hadoop写到了环境变量中,所以一下的命令可以在任何地方执行,只有你输进来hadoop中的前几个字母,然后按下Tab键,如果能够补全说明hadoop的环境配置是正确的,否则不正确或者没有配置,你需要在bin目录下才能执行这句。
初始化的后如果下式如下,则证明成功
启动hdfs
分别在其他两台机子上执行上图中2的步骤,显示如下:
则正确,这个版本的hadoop找不到master的文件(配置secondary namenode),我试着创建这个文件,可是也没有成功将SNN配置到slave1或者slave2(SNN与Namenode不能在同一台机器,在一起了也不会出错)。
,次打开网页时候看见活着的namenode为0,上面显示配置都对,
原因是我防火墙没有关闭
关闭后一切正常