Hadoop的安装不是很容易,以至于Apache还有另外一个开源的项目Ambari来做Hadoop集群的安装和配置以及管理。我们还是从头来安装一次Hadoop。
为了方便我们是以root用户来安装。

我们现在有3台机器,分别是hadoop1,hadoop2,hadoop3。来组装一个集群。hadoop1是我们的主节点,hadoop2,hadoop3是我们的子节点。

安装JDK

你需要在每台机器做的是:

      1. Oracle的官网下载JDK1.8: jdk-8u151-linux-x64.tar.gz
      2. 下载后运行命令 tar zxvf jdk-8u151-linux-x64.tar.gz 来解压JDK
      3. 运行命令 mv jdk1.8.0_151 /usr/lib/jdk
      4. 在etc/profile最后添加下边命令:
    
    
    export JAVA_HOME=/usr/lib/jdk
    export PATH=.:${JAVA_HOME}/bin:$PATH
    1. source /etc/profile

网络配置

  1. 修改 /etc/hostname 文件里的主机名分别为 hadoop1,hadoop2,hadoop3
  2. 修改 /etc/hosts 里的ip和主机名

192.168.192.90  hadoop1
192.168.192.110  hadoop2
192.168.193.34  hadoop3

配置ssh免密登录

Hadoop框架本身并不需要ssh登录到每个机器。但是hadoop提供的一些脚本,比如start-dfs.sh是用来启动HDFS的。它需要登录到集群各个节点来启动每个节点的守护进程。你也可以不配置ssh,每次自己去每个机器启动Hadoop需要的各个服务。当然一般没人那么干。

ssh免密登录需要让master机可以不需要密码登录集群里所有机器,包括自己。原理就是在hadoop1这个主节点上生成公钥,并且把生成的公钥加入到集群所有机器的~/ssh/authorized_keys文件里。配置完成后,
你可以在hadoop1上,依次验证ssh hadoop1,ssh hadoop2,ssh hadoop3 是否不需要密码可以登录。第一次连接时系统会询问我们是否信任目标机器公钥,输入yes即可。

下载并解压Hadoop的binary包

Hadoop3.0下载注意要下载binary的。
下载后,解压到/opt/hadoop 目录下。然后需要修改/etc/profile文件,加上hadoop的环境变量。并 source /etc/profile 执行来立即生效


export HADOOP_HOME=/opt/hadoop
export PAHT=${HADOOP_HOME}/bin:$PATH

我们需要在集群的机器上都做Hadoop的安装和PATH的配置。

Hadoop的配置

我们现在不用在意这些配置的含义,后边我们了解了Hadoop的工作原理后再来分析每个配置文件的作用。
一.在hadoop1这个主节点上,/opt/hadoop/etc/hadoop/works 文件改为


hadoop2
hadoop3

二.修改/opt/hadoop/etc/hadoop/core-site.xml


<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://hadoop1:9000</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/opt/hadoop/tmp</value>
                <description>Abase for other temporary directories.</description>
        </property>
</configuration>

三.修改/opt/hadoop/etc/hadoop/hdfs-site.xml


<configuration>
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>hadoop1:50090</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>3</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/opt/hadoop/tmp/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/opt/hadoop/tmp/dfs/data</value>
        </property>
        <property>
                <name>dfs.namenode.http-address</name>
                <value>hadoop1:50070</value>
        </property>
</configuration>

四.修改/opt/hadoop/etc/hadoop/mapred-site.xml


<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>hadoop1:10020</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>hadoop1:19888</value>
        </property>
                <property>
            <name>mapreduce.application.classpath</name>
            <value>
                /opt/hadoop/etc/hadoop,
                /opt/hadoop/share/hadoop/common/*,
                /opt/hadoop/share/hadoop/common/lib/*,
                /opt/hadoop/share/hadoop/hdfs/*,
                /opt/hadoop/share/hadoop/hdfs/lib/*,
                /opt/hadoop/share/hadoop/mapreduce/*,
                /opt/hadoop/share/hadoop/mapreduce/lib/*,
                /opt/hadoop/share/hadoop/yarn/*,
                /opt/hadoop/share/hadoop/yarn/lib/*
            </value>
        </property>


</configuration>

五.修改/opt/hadoop/etc/hadoop/yarn-site.xml


<configuration>

<!-- Site specific YARN configuration properties -->

        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>hadoop1</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
                <property>
          <name>yarn.nodemanager.vmem-check-enabled</name>
          <value>false</value>
          <description>Whether virtual memory limits will be enforced for containers</description>
        </property>
        <property>
          <name>yarn.nodemanager.vmem-pmem-ratio</name>
          <value>4</value>
          <description>Ratio between virtual memory to physical memory when setting memory limits for containers</description>
        </property>

</configuration>

六.修改/opt/hadoop/etc/hadoop/hadoop-env.xml,在xml开头加上下边一句。


...
export JAVA_HOME=/usr/lib/jdk
...

七.修改/opt/hadoop/sbin/start-dfs.sh 和同目录下的stop-dfs.sh,在xml开头加上下边一句。


...
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
...

八.修改/opt/hadoop/sbin/start-yarn.sh 和同目录下的stop-yarn.sh,在xml开头加上下边一句。


...
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
...

将之前这些改动过的配置文件,复制到每一个节点.

至此,我们安装好了Hadoop3.0
首先我们需要format一下我们的hdfs,我们在hadoop1上运行下边的命令:


root@hadoop1:/opt/hadoop# hdfs namenode -format

然后我们在hadoop1的机器上试着启动一下Hadoop,我们进入到/opt/hadoop/sbin目录,然后运行下边的命令


root@hadoop1:/opt/hadoop/sbin# ./start-all.sh
WARNING: HADOOP_SECURE_DN_USER has been replaced by HDFS_DATANODE_SECURE_USER. Using value of HADOOP_SECURE_DN_USER.
Starting namenodes on [hadoop1]
Starting datanodes
Starting secondary namenodes [hadoop1]
Starting resourcemanager
Starting nodemanagers

然后我们再运行jps看有哪些java进程在运行:


root@hadoop1:/opt/hadoop/sbin# jps
11030 SecondaryNameNode
10776 NameNode
11292 ResourceManager
11615 Jps

这时我们去hadoop2,hadoop3上去运行jps命令:


root@hadoop2:~# jps
6451 Jps
6275 NodeManager
6150 DataNode

如果你看到的输入和我一样,那么恭喜你装好了, 如果有什么错误,那你就需要自行到网上去搜索解决办法了,Good luck!
你可以在你的浏览器里输入http://hadoop1:50070

我们现在可以关闭Hadoop,在hadoop1上运行:


root@hadoop1:/opt/hadoop/sbin# ./stop-all.sh
WARNING: HADOOP_SECURE_DN_USER has been replaced by HDFS_DATANODE_SECURE_USER. Using value of HADOOP_SECURE_DN_USER.
Stopping namenodes on [hadoop1]
Stopping datanodes
Stopping secondary namenodes [hadoop1]
Stopping nodemanagers
Stopping resourcemanager

如果你想重新格式化HDFS的话,可以用下边的命令:


./sbin/stop-all.sh  
rm -r ./tmp     # 删除所有数据
./bin/hdfs namenode -format   # 格式化
./sbin/start-all.sh

发表评论

电子邮件地址不会被公开。 必填项已用*标注

%d 博主赞过: