Hadoop学习1-MacBook下Hadoop-2.9的配置

MacBook下Hadoop-2.9的配置

由于研究生课程需要,今天下午搭建了本地Hadoop环境。我用的是Hadoop-2.9版本,不打算一上来就3.x(其实是因为大部分教程都是2.x, 呵呵)。
本人MacBook Pro配置是 8G内存,256GSSD,InterCore I5处理器。跑起来3个CentOS虚拟机+IDEA+网易云+有道云笔记+QQ+微信+20个Chrome网页不成问题,大概总占7G的内存,虽然有一点点影响系统速度,可以接受。

1. 安装VMware Fusion

由于是本地的完全分布式环境搭建,我打算在VMware Fusion中安装3个CentOS7虚拟机,其中一个即是namenode也是datanode,另外两台datanode,这样就做到1个namenode+3个datanode。

VMware Fusion 官方下载地址

2.下载CentOS镜像

在官网下载 DVD ISO 就好了,标配。

CentOS官方下载地址

3.下载Hadoop-2.9.1

下载Linux版本的Hadoop。

Hadoop下载地址

4.下载JDK1.8

jdk这里就不用说了,去官网下载Linux版本的jdk1.8。

5.配置Hadoop环境

我们首先配置一个节点,namenode节点,然后直接把配置好的hadoop打包用ssh发送给其他两个节点就好了。

  • 修改主机名修改HOSTS文件

为了方便区分,我们用 hostname xxx 命令重设主机名,我三台虚拟机分别名为namenode、datanode1、datanode2。

  • 修改Hosts文件
sudo vi /etc/hosts

加上三台虚拟机,三个虚拟机做同样的操作,注意ip地址换成自己虚拟机的,不知道可以用ifconfig命令查看。

192.168.246.128    namenode
192.168.246.129    datanode1
192.168.246.130    datanode2
  • JDK配置

Linux下JDK的配置我就不用说了,首先配置好JDK,环境变量JAVA_HOME配置好。

export JAVA_HOME=/opt/Java/jdk1.8.0_181
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  • Hadoop配置

解压Hadoop到/opt/hadoop,添加环境变量HADOOP_HOME:

export HADOOP_HOME=/opt/hadoop/hadoop-2.9.1
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

进入Hadoop配置文件目录。

cd /opt/hadoop/hadoop-2.9.1/etc/hadoop

会看到很多xml配置文件和shell脚本文件

-rw-r--r--. 1 root root  7861 4月  16 19:52 capacity-scheduler.xml
-rw-r--r--. 1 root root  1335 4月  16 19:52 configuration.xsl
-rw-r--r--. 1 root root  1211 4月  16 19:52 container-executor.cfg
-rw-r--r--. 1 root root   996 9月  24 17:12 core-site.xml
-rw-r--r--. 1 root root  4133 4月  16 19:52 hadoop-env.cmd
-rw-r--r--. 1 root root  4980 9月  24 19:25 hadoop-env.sh
-rw-r--r--. 1 root root  2598 4月  16 19:52 hadoop-metrics2.properties
-rw-r--r--. 1 root root  2490 4月  16 19:52 hadoop-metrics.properties
-rw-r--r--. 1 root root 10206 4月  16 19:52 hadoop-policy.xml
-rw-r--r--. 1 root root  1378 9月  24 17:07 hdfs-site.xml
-rw-r--r--. 1 root root  2230 4月  16 19:52 httpfs-env.sh
-rw-r--r--. 1 root root  1657 4月  16 19:52 httpfs-log4j.properties
-rw-r--r--. 1 root root    21 4月  16 19:52 httpfs-signature.secret
-rw-r--r--. 1 root root   620 4月  16 19:52 httpfs-site.xml
-rw-r--r--. 1 root root  3518 4月  16 19:52 kms-acls.xml
-rw-r--r--. 1 root root  3139 4月  16 19:52 kms-env.sh
-rw-r--r--. 1 root root  1788 4月  16 19:52 kms-log4j.properties
-rw-r--r--. 1 root root  5939 4月  16 19:52 kms-site.xml
-rw-r--r--. 1 root root 14016 4月  16 19:52 log4j.properties
-rw-r--r--. 1 root root  1076 4月  16 19:52 mapred-env.cmd
-rw-r--r--. 1 root root  1507 4月  16 19:52 mapred-env.sh
-rw-r--r--. 1 root root  4113 4月  16 19:52 mapred-queues.xml.template
-rw-r--r--. 1 root root   856 9月  24 15:42 mapred-site.xml
-rw-r--r--. 1 root root    29 9月  24 16:14 slaves
-rw-r--r--. 1 root root  2316 4月  16 19:52 ssl-client.xml.example
-rw-r--r--. 1 root root  2697 4月  16 19:52 ssl-server.xml.example
-rw-r--r--. 1 root root  2250 4月  16 19:52 yarn-env.cmd
-rw-r--r--. 1 root root  4876 4月  16 19:52 yarn-env.sh
-rw-r--r--. 1 root root  1475 9月  24 19:48 yarn-site.xml
  • 配置 hadoop-env.sh

这里暂时只要修改一个地方

export JAVA_HOME=${JAVA_HOME} 改成绝对路径 export JAVA_HOME=/opt/Java/jdk1.8.0_181/

不知道为什么,如果不改的话,hadoop是读取不到变量JAVA_HOME的。

  • 配置core-site.xml

    
    
        fs.defaultFS
        hdfs://namenode:9000/
    

        
     
        hadoop.tmp.dir
        /opt/hadoop/hadoop-2.9.1/data/
    

  • 配置hdfs-site.xml

   
       
   
      dfs.replication
      3
   
    
   
   
      dfs.permissions
      false
   

  
   
      dfs.namenode.data.dir
      /opt/hadoop/namenode
   
 
   
      dfs.datanode.data.dir
      /opt/hadoop/datanode
   
     
     
    
            dfs.http.address
            namenode:50070
    
  
    
            dfs.datanode.http.address
            namenode:50075
    

  • 配置mapred-site.xml

    
   
      mapreduce.framework.name
      yarn
   

  • 配置yarn-site.xml



        
                yarn.resourcemanager.hostname
                namenode
        

        
                yarn.nodemanager.aux-services
                mapreduce_shuffle
        

  • 配置slavers
namenode
datanode1
datanode2

配置结束后,将hadoop安装目录整个打包,scp到其他两个虚拟机,在那里直接解压就好。

6.配置ssh无密码登陆

在namenode机器机器中,执行

ssh-keygen -t rsa

会在~/.ssh中生成一对公私钥。

#ls ~/.ssh/ 
authorized_keys  id_rsa  id_rsa.pub  known_hosts

将整个.ssh目录scp发送到另外两个机器的~/下

scp ~/.ssh/ root@datanode1:~/ 
scp ~/.ssh/ root@datanode2:~/ 

现在你的namenode可以用ssh命令无密码的登陆到另外两个虚拟机的root用户了。

6.初始化namenode

注意上面的hadoop的环境变量一定要配。
在namenode那台机器上,用hadoop namenode -format命令初始化

开启你的所有节点:start-all.sh

在 namenode下用 jps命令查看开启的节点。

3476 SecondaryNameNode
3176 NameNode
3756 NodeManager
3629 ResourceManager
3310 DataNode
5118 Jps

如果以上6个节点全部开启,说明完全分布式hadoop配置成功喽~~~开森~~~

你可能感兴趣的:(Java,hadoop,ssh,linux,分布式系统,大数据)