安装jdk和hadoop(下载安装以及配置环境变量)

1.下载安装jdk

可通过apt-get install指令下载jdk,也可以从oracle官网下载jdk后解压到指定目录,本次解压目录为/home/user/software/jdk1.8,最好下载最新版本的jdk。

2.配置jdk环境变量

命令行sudo gedit /etc/profile指令打开文件后在文件的末尾添加如下代码:

JAVA_HOME=/home/user/software/jdk1.8
PATH=$PATH:$JAVA_HOME/bin

(注意:具体路径根据自己安装的jdk为准)

3.检查jdk是否配置成功

命令行source /etc/profile指令,使其文件立即生效

命令行java -version指令,如果显示当前jdk版本号则表示成功

4.下载hadoop

从apache官网下载hadoop的binary的tar.gz文件,解压到指定目录,本次解压目录为/home/user/software/hadoop-2.7.5

5.配置hadoop环境变量

命令行sudo gedit /etc/profile指令打开文件后在文件的末尾添加如下代码:

HADOOP_HOME=/home/user/software/hadoop-2.7.5
PATH=$PATH:$HADOOP_HOME/bin

6. 检查hadoop是否配置成功

命令行source /etc/profile指令,使其文件立即生效

命令行hadoop version指令(注意没有横杠),如果显示当前hadoop版本号则表示成功

7.补充修改,以免系统不识别hadoop指令

命令行sudo gedit /etc/environment 修改为如下:

export JAVA_HOME= 
 /home/shen/software/jdk1.8.0 

 

  export HADOOP_INSTALL= 
 /home/shen/software/hadoop-2.7.5 

 
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/user/software/jdk1.8.0/bin:/home/user/software/hadoop-2.7.5/bin:/home/user/software/hadoop-2.7.5/sbin"

(斜体部分的路径为自身的jdk和hadoop安装路径,该文件映射软件的bin目录,hadoop有一个bin和一个sbin)


---------------------------------------------------------------------------------------------------------------


配置hadoop(参数配置):文件都在/home/user/software/hadoop-2.7.5/etc目录下,也就是hadoop解压后的根目录下的etc文件夹中,这些文件最开始的configuration属性中都是空的,将其填充起来。

1.   配置core-site.xml文件

<configuration>
              <property>
                            <name>fs.defaultFS</name>
                            <value>hdfs://master:9000</value>
              </property>
</configuration>

(这里先写master,因为后面要把主机的名称改为master)

2.配置hdfs-site.xml文件

<configuration>
              <property>
                            <name>dfs.replication</name>
                            <value>1</value>
              </property>
</configuration>

(这里写副本数量,根据实际情况填写,如果虚拟机克隆的少,比如克隆了一台,这里就还是写1,如果多就写2-3即可,这里的副本数量也就是备份数量,如果只克隆了一台机器,那就一共2台机器,一个备份数就可以了,该备份的节点是在主机上,实际环境中备份数一般是大于等于3)

3.配置yarn-site.xml文件

<configuration>
              <property>
                            <name>yarn.resourcemanager.hostname</name>
                            <value>master</value>
              </property>
              <property>
                            <name>yarn.nodemanager.aux-services</name>
                            <value>mapreduce_shuffle</value>
              </property>
</configuration>

(第一个属性先写master,后面会把主机名修改成master,第二个属性是固定的)

4.配置mapred-site.xml文件

<configuration>
              <property>
                            <name>mapreduce.framework.name</name>
                            <value>yarn</value>
              </property>
</configuration>

(这里和伪分布一样不需要改动)

---------------------------------------------------------------------------------------------------------------

下载并配置ssh(机器之间实现无密码通信)

1.使用sudo apt-get install ssh指令下载ssh

2.命令行ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa指令在根目录下的隐藏文件ssh中生成密钥,此时会出现两个文件id_rsa和id_rsa.pub,第一个是私钥,第二个是公钥。

3.在~/.ssh/目录下,使用cat id_rsa.pub >> authorized_keys指令,将公钥集中放在授权密钥文件中,因为所有机器都要与主机通信,也就是都要给主机发送公钥,所以将所有的公钥集中放在一个授权文件中。

4.使用ssh localhost指令尝试连接本地主机,第一次连接会询问是否确定无密连接,输入yes即可,如果连接成功则说明配置成功,然后输入exit退出连接。

---------------------------------------------------------------------------------------------------------------

修改slaves文件(分配datanode)

命令行sudo gedit /home/user/software/hadoop-2.7.5/etc/hadoop/slaves指令,打开文件,将localhost删掉,改为如下:

slave1
slave2

(如果有多个可以继续添加,具体路径根据hadoop安装路径为准,这里写slave1是因为后面会修改从机名称,也可以写ip地址)

---------------------------------------------------------------------------------------------------------------


克隆初步配好的虚拟机并进一步配置

1.右键点击虚拟机,点克隆,选择完全克隆,虚拟机名称改为slave1(名称可以随意取),然后修改路径完成。如果机器性能不是很好可以使用ctrl+alt+F6将ubuntu切换成文本系统模式。

2.命令行sudo gedit /etc/hostname分别修改不同机器的机器名称,主机改为master,从机改为slave1,slave2等等

3.命令行sudo gedit /etc/hosts分别修改不同机器的ip地址映射,补全所有机器的ip和对应hostname,例如:

127.0.0.1             localhost
127.0.1.1             ubuntu
192.168.35.139    master
192.168.35.140    slave1
192.168.35.141    slave1

(如果有其他机器可以继续写,每行写一个)

第3步配置的hosts文件适用于所有机器,所以使用sudo scp/etc/hosts 用户名@ip:/etc/指令覆盖其他机器上的hosts文件(用户名即是ubuntu用户登录的名字,@后面的ip是写需要覆盖的机器的ip地址),多次执行该指令将所有机器的hosts文件覆盖完。(如果出现没有许可的情况,可以修改/etc/ssh/sshd_config文件中的PermitRootLogin属性,改为yes,然后使用service sshd restart命令重启一下ssh服务)。当然如果觉得在每台机器上修改hosts文件不麻烦的话,也可以分别修改成跟主机一样的hosts内容,这样就不需要使用sudo scp命令了。


---------------------------------------------------------------------------------------------------------------


格式化名称节点(namenode)

命令行hadoop namenode –format分别来格式化所有机器的名称节点

(如果出现无法格式化错误,用reboot重启一下系统)

(注意:由于之前没有配置hadoop的tmp文件地址,使用一次格式化命令后不要再改动,否则改起来很麻烦,确保之前配置的都没问题了,并且确定要完全分布不再切换模式了后再格式化namenode,格式化这一步尽量只做一次)

---------------------------------------------------------------------------------------------------------------

启动守护进程

在主机(master)上的命令行输入start-all.sh启动所有机器的进程

命令行jps查看已启动的进程,显示如下:

master机器上的进程:
    3367 Jps
    2968 SecondaryNameNode
    2764 NameNode
    3118 ResourceManager
slave机器上的进程:
    1686 DataNode
    1948 Jps
    1806 NodeManager