Hadoop安装指南

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chr1991/article/details/84798745

1. 修改hosts和hostname

在ubuntu上,/etc/hosts 保存IP地址和域名的对应关系,/etc/hostname 保存本机的主机名。我们可以在hosts文件里加入这样的映射

ip_address1 master
ip_address2 slave1
ip_address3 slave2

然后用

sudo hostname name1
sudo hostname name2
sudo hostname name3

修改这三台服务器的主机名。可以用

hostname

查看是否修改成功。

2. ssh 设置

我们需要设置ssh,让集群做到无密登录。首先,要产生一对RSA钥匙对:

ssh-keygen -t rsa -f ~/.ssh/id_rsa

尽管我们要做到无密登录,但是产生钥匙对时最好输入一个密码。~/.ssh/id_rsa 是私钥,~/.ssh/id_rsa.pub 是公钥。我们在每台机器上都产生钥匙对,然后用 scp 命令把公钥传送到其他机子上。

cat id_rsa.pub >> ~/.ssh/authorized_keys

这样就把公钥加入了认证钥匙中。接着用 ssh-agentssh-add 做到无密登录,

ssh-agent bash
ssh-add

无密登录就完成了。

3. 安装Java方法

Java官网下载最新额JDK。
/home/ubuntu/目录下对jdk-10.0.2.tar.gz文件输入命令 tar -xzvf [filename].tar.gz
解压好的文件夹jdk-10.0.2/就是JDK的安装目录。
然后在~/.bashrc后面加入几行命令

export JAVA_HOME="/home/ubuntu/jdk-10.0.2"
export PATH="$JAVA_HOME/bin:$PATH"
export CLASSPATH="$JAVA_HOME/lib/"

这样就把java的路径加入了环境变量中。输入java -version,看到类似下列的显示就可以确认Java已经正确安装。

java version "10.0.2" 2018-07-17  
Java(TM) SE Runtime Environment 18.3 (build 10.0.2+13)  
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.2+13, mixed mode)

4. Hadoop的下载和安装

  1. 从这两个地址下载Hadoop安装文件和验证文件:下载地址一下载地址二。这里的版本是2.9.2。下载命令如下:

     wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.9.2/hadoop-2.9.2.tar.gz  
     wget https://www-eu.apache.org/dist/hadoop/common/hadoop-2.9.2/hadoop-2.9.2.tar.gz.asc  
     wget https://www-eu.apache.org/dist/hadoop/common/hadoop-2.9.2/hadoop-2.9.2.tar.gz.mds  
     wget https://www-us.apache.org/dist/hadoop/common/KEYS  
    

详细说明请看这里
2. 验证下载文件:
我们可以用PGP或者GPG来验证PGP的签名。首先下载针对相关版本的KEYS和asc文件。你应该从主要分发网站下载,而不是镜像网站下载。我们用下列指令来验证签名:

	gpg --import KEYS  
	gpg --verify downloaded_file.asc downloaded_file  

验证成功后可以得到这样的输出:

	gpg: Signature made Wed 14 Nov 2018 01:48:06 AM CST using RSA key ID A400FD50  
	gpg: Good signature from "Akira Ajisaka <[email protected]>"  
	gpg:                 aka "Akira Ajisaka <[email protected]>"   
	gpg: WARNING: This key is not certified with a trusted signature!  
	gpg:          There is no indication that the signature belongs to the owner.  
	Primary key fingerprint: F05D F650 0A02 1922 7B56  6990 C1ED BB9C A400 FD50   

或者

	pgpk -a KEYS
	pgpv downloaded\_file.asc  

或者

	pgp -ka KEYS  
	pgp downloaded\_file.asc 

或者,你也可以验证文件的哈希值。我们可以用gpg命令计算哈希值。

	gpg --print-md SHA1 downloaded_file

该命令的输出应该与SHA1文件的内容进行对比。mds文件的内容类似于下面

	/build/source/target/artifacts/hadoop-2.9.2.tar.gz:
	   MD5 = 82 DB 6A 62 FE BD 8C 29  76 D7 5B 8B D5 51 33 15
	/build/source/target/artifacts/hadoop-2.9.2.tar.gz:
	  SHA1 = EBB3 F0E5 536E E79E C00F  8D8A 209E F647 B10B DE26
	/build/source/target/artifacts/hadoop-2.9.2.tar.gz:
	RMD160 = 903E 2EDF 5877 B09F 04B7  8E3C 7789 66CD AE88 362E
	/build/source/target/artifacts/hadoop-2.9.2.tar.gz:
	SHA224 = 1E76D1BD ED80F3B0 CE8C5ED6 3897A39E A75E219D BEB09023 D55892C7
	/build/source/target/artifacts/hadoop-2.9.2.tar.gz:
	SHA256 = 3D2023C4 6B1156C1 B102461A D08CBC17 C8CC5300 4EAE95DA B40A1F65 9839F28A
	/build/source/target/artifacts/hadoop-2.9.2.tar.gz:
	SHA384 = BA008D60 DF04A896 FDEEE5B7 B9C2233C C33692D4 F423EA7B 1F088913 4C36A057
	         FE859ED3 0FA41F1A 194B239F 09A3FF28
	/build/source/target/artifacts/hadoop-2.9.2.tar.gz:
	SHA512 = BD6060B6 29C2E7C5 D411AE3B A2330B79 CDB2F1CA A87D5EA6 9392C0F9 CB64A834
	         64EC8E23 F2CC6133 1B9F4928 4A6BFDC1 A3FBDEFF E3402650 E64938F5 672094F5
  1. 安装Hadoop:我们可以把Hadoop安装在/usr/local/下。注意:不要把它装在用户目录下。

     sudo mv hadoop-2.9.2.tar.gz /usr/local/
     cd /usr/local
     sudo tar xzvf hadoop-2.9.2.tar.gz   
    

    我们也需要把Hadoop的文件主任设置为Hadoop的用户和组群

    sudo chown -R root:root hadoop-2.9.2

    这里Hadoop的用户和组群都是root。

  2. SSH设置:Hadoop控制脚本依赖SSH来实施集群内部的操作。为了做到无缝工作,我们需要设置SSH来允许集群内部主机用户进行无密码登录。最简单的方法时产生一对公钥和秘钥,然后用网络文件系统在集群内共享。

    • 首先在Hadoop用户账号下用指令 ssh-keygen -t rsa -f ~/.ssh/id_rsa 产生RSA钥匙对。尽管我们需要无秘钥登录,但是没有密码的钥匙并不是个好操作。我们应该用ssh-agent来避免每次连接都要输入密码。-f 选项指定了私钥的存储文件,公钥则存储在相同文件夹相同文件名并以.pub结尾的文件中,~/.ssh/id_rsa.pubid_rsa可以是任何文件名。
    • 我们需要确保公钥保存在集群内部任何机器的 ~/.ssh/authorized\_keys 文件中。如果Hadoop用户目录是个网络文件系统,那么钥匙可以用 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 指令来共享。如果用户目录没有使用网络文件系统,那么我们就要手动复制文件来共享。把文件从master传送到每个slave上,以及把文件从每个slave传送到master上:scp /home/username1/.ssh/id_rsa.pub >> username2@ip_address:/home/username2/id_rsa.pub。把 id_rsa.pub 里的内容复制到authorized_keys里:cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
    • 我们用 ssh-agent bash 启动一个带着 ssh-agentbash ,在这个 bash 里面用 ssh-add 添加钥匙。然后在这个 bash 里的任何程序都会自动使用 ssh-agent 记录的钥匙登录其他机器。
  3. 配置Hadoop:cd /usr/local/hadoop-2.9.2/etc/hadoop进入Hadoop配置目录,需要配置有以下7个文件:hadoop-env.shyarn-env.shslavescore-site.xmlhdfs-site.xmlmapred-site.xmlyarn-site.xml

    • hadoop-env.sh中配置JAVA_HOME。如果环境变量中已经定义过JAVA_HOME,那么这里也不可以省略。

    • yarn-env.sh中配置JAVA_HOME,同上。

    • 在slaves中配置slave结点的ip或者host。

    • 修改core-site.xml

      <configuration>
          <property>
              <name>fs.defaultFS</name>
              <value>hdfs://master:9000/</value>
          </property>
          <property>
               <name>hadoop.tmp.dir</name>
               <value>file:/home/spark/workspace/hadoop-2.6.0/tmp</value>
          </property>
      </configuration>
      
    • 修改hdfs-site.xml文件

      <configuration>
          <property>
              <name>dfs.namenode.secondary.http-address</name>
              <value>master:9001</value>
          </property>
          <property>
              <name>dfs.namenode.name.dir</name>
              <value>file:/home/spark/workspace/hadoop-2.6.0/dfs/name</value>
          </property>
          <property>
              <name>dfs.datanode.data.dir</name>
              <value>file:/home/spark/workspace/hadoop-2.6.0/dfs/data</value>
          </property>
          <property>
              <name>dfs.replication</name>
              <value>3</value>
          </property>
      </configuration>
      
    • 修改mapred-site.xml

        <configuration>
            <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
            </property>
        </configuration>
      
    • 修改yarn-site.xml

        <configuration>
            <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
            </property>
            <property>
                <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
                <value>org.apache.hadoop.mapred.ShuffleHandler</value>
            </property>
            <property>
                <name>yarn.resourcemanager.address</name>
                <value>master:8032</value>
            </property>
            <property>
                <name>yarn.resourcemanager.scheduler.address</name>
                <value>master:8030</value>
            </property>
            <property>
                <name>yarn.resourcemanager.resource-tracker.address</name>
                <value>master:8035</value>
            </property>
            <property>
                <name>yarn.resourcemanager.admin.address</name>
                <value>master:8033</value>
            </property>
            <property>
                <name>yarn.resourcemanager.webapp.address</name>
                <value>master:8088</value>
            </property>
        </configuration>
      
  4. 将配置好的hadoop-2.9.2文件夹分发给所有的slaves,可以用使用scp指令,例如下面

     scp -r /usr/local/hadoop-2.9.2 ubuntu@slave1:~/
    
  5. 启动Hadoop:在master上执行以下操作,就可以启动hadoop了。

       cd /usr/local/hadoop-2.9.2
       bin/hadoop namenode -format
       sbin/start-dfs.sh
       sbin/start-yarn.sh
    
  6. 验证hadoop是否安装成功: 可以通过jps命令查看各个结点启动的进程是否正常。在master上应该有以下几个进程

     $ jps  #run on master
     3407 SecondaryNameNode
     3218 NameNode
     3552 ResourceManager
     3910 Jps  
    

    如果master上的进程启动失败,首先应该检查master上的端口是否被屏蔽了或者已经被占用了。

  7. 在每个slave上应该有以下几个进程:

     $ jps   #run on slaves
     2072 NodeManager
     2213 Jps
     1962 DataNode
    

    或者在浏览器输入 http://master_ip:8088,这里把master_ip替换为master的IP地址,应该有hadoop的管理界面出来,并能看到slave1和slave2结点,如下图所示
    Hadoop浏览器界面

猜你喜欢

转载自blog.csdn.net/chr1991/article/details/84798745
今日推荐