linux下配置hadoop完全分布

安装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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值