Hadoop安装-超详细

Hadoop安装-超详细

临近毕业,签的公司(国企),和新发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和名字的映射。(克隆的机子名字是一样的)

修改名字
名字和ip的映射

主要是看下面三个

第二步:ping一下,看上面的修改生效没?

第三步:SSH实现三台机子免密码登录。

产生密匙
本地免密码登录

将产生的密匙scp传递另外两台机子上,实现master到slave1,slave2的免密码登录。

在slave1和slave2上也产生密匙,也就是在slave1和slave2中执行上面产生密匙那个图中的命令,这样才会产生.ssh的目录,将id_dsa.pub 也写到slave1和slave2中.ssh目录下的authorized文件中。实先master到slave1,slave2的免密码登录。

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,上面显示配置都对,

原因是我防火墙没有关闭

关闭后一切正常

编辑于 2019-02-07