Hadoop全分布安装--使用JournalManager

我是在ubuntu上安装的Hadoop,ubuntu版本14.04和16.04都有,关系不大。使用了3台服务器。

总共安装了2个nameNode,3个dataNode,3个journalNode

下面是安装步骤:

1. 安装JDK:我安装的是1.8。

    jdk安装方法,参照以前的: https://blog.csdn.net/redstarofsleep/article/details/45091997 

    和这个里面有些不同,现在直接下载tar.gz包,解压缩就可以了。环境变量照上面这个配。

2. 修改主机名:

    编辑/etc/hostname,修改主机名,每台机器都改成不一样的。改完后再输入hostname查看,会发现没变,改了这个文件是要重启后才会变的。直接执行hostname <主机名>即可。例如将hostname改成server229:

   

hostname server229

然后修改/etc/hosts,将各机器的ip和主机名配置进去,所以需要配一下:

    127.0.0.1    localhost
    127.0.1.1    selfserver229
    192.168.18.228  server228
    192.168.18.225  server225
    192.168.18.223  server223
    192.168.18.229  server229
    192.168.18.226  server226

比如我上面这个,该台机器的ip是192.168.18.229。127.0.0.1和127.0.1.1中两个是本来就有的,其中127.0.1.1和原来hostname里的主机名是一样的,我这里特地改成不一样的。hostname里的主机名配到该机器的物理ip上。

检验是否配置好,ping <主机名>就可以了

3. 安装ssh和rsync

apt-get install ssh
apt-get install rsync

4. 配置ssh免密码登录

因为偷懒,所以用的都是root账户,而现在的ubuntu下,默认都是不让root账户远程ssh登录的。所以首先要开启root账号远程ssh登录, 还是参照以前的文章: https://blog.csdn.net/redstarofsleep/article/details/46787447

  $ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
  $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  $ chmod 0600 ~/.ssh/authorized_keys

注意一下,如果因为懒,把所有机器都用相同的key的话,也是可以的,把生成的id_rsa和id_rsa.pub拷贝到其它机器的/root/.ssh/下然后生成authorized_keys就可以,但是要注意权限,这三个文件都是只能所有者读写,其它权限都是没有的。也就是上面的最后一条命令,将权限设为0600.

5. 安装zookeeper集群

看之前的文章: https://blog.csdn.net/redstarofsleep/article/details/78593732

 

好了,终于可以开始安装hadoop了

6. 解压hadoop安装包,我安装的hadoop版本是2.7.4. 安装路径是/usr/local/hadoop/

tar -xzvf hadoop-2.7.4.tar.gz

7. 在hadoop内配置jdk

    修改hadoop路径下etc/hadoop目录下的hadoo-env.sh

export JAVA_HOME=/root/training/jdk1.8.0_181

8. 修改core-site.xml


  
  
    fs.defaultFS
    hdfs://nameService1
  
  
  
    hadoop.tmp.dir
    /usr/local/hadoop/hadoop-2.7.4/tmp
  
  
  
    ha.zookeeper.quorum
    server229:2181,server229:2182,server225:2181
  

以上配置中指定了一个临时目录,文件夹不存在的话,需要自己用mkdir创建。zookeeper集群里的ip都用主机名替代了,主机名就是第2步中配在hosts文件里的。

9. 配置hdfs-site.xml


  
  
    dfs.nameservices
    nameService1
  
  
    dfs.ha.namenodes.nameService1
    nameNode1,nameNode2
  
  
    dfs.namenode.rpc-address.nameService1.nameNode1
    server227:9000
  
  
    dfs.namenode.http-address.nameService1.nameNode1
    server227:50070
  
  
    dfs.namenode.rpc-address.nameService1.nameNode2
    server228:9000
  
  
    dfs.namenode.http-address.nameService1.nameNode2
    server228:50070
  
  
  
    dfs.namenode.shared.edits.dir
    qjournal://server227:8485;server228:8485;server225:8485/nameService1
  
  
  
    dfs.journalnode.edits.dir
    /usr/local/hadoop/hadoop-2.7.4/journal
  
  
  
    dfs.ha.automatic-failover.enabled
    true
  
  
  
    dfs.client.failover.proxy.provider.nameService1
    org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
  
  
  
    dfs.ha.fencing.methods
    
      sshfence
      shell(/bin/true)
    
  
  

    dfs.ha.fencing.ssh.private-key-files
    /root/.ssh/id_rsa
  
  
  
    dfs.ha.fencing.ssh.connect-timeout
    30000
  


这个配置文件中主要是配置了一个nameservice,这个nameservice就是core-site.xml里指定的那个名字:“nameservice1”,然后这个nameservice下有两个namenode(namenode1和namenode2),即一主一备保证高可用。还配置了journalNode,按照关网要求的journalNode至少要3台。journalNode上还配置了一个文件路径journal,同样,文件夹不存在的话要自己创建。

10. 配置mapred-site.xml


  
    mapreduce.framework.name
    yarn
  

11. 配置yarn-site.xml




  
  
    yarn.resourcemanager.ha.enabled
    true
  
  
  
    yarn.resourcemanager.cluster-id
    yrc
  
  
  
    yarn.resourcemanager.ha.rm-ids
    resourceManager1,resourceManager2
  
  
  
    yarn.resourcemanager.hostname.resourceManager1
    server227
  
  
    yarn.resourcemanager.hostname.resourceManager2
    server228
  
  
  
    yarn.resourcemanager.zk-address
    server229:2181,server229:2182,server225:2181
  
  
    yarn.nodemanager.aux-services
    mapreduce_shuffle
  

这主要是配置yarn容器。

12. 配收slave文件

打开slave文件,这个文件是配置从节点的,里面原来有一行localhost,把它注掉。换成3台从节点的域名。

#localhost
server227
server228
server225

13. 将配置文件拷贝到另外两台机器上,因为已经开启了ssh免密登录,所以可以直接用scp命令

scp -r /usr/local/hadoop/hadoop-2.7.3/etc root@server228:/usr/local/hadoop-2.7.3/etc/

14. 启动journalNode

在hadoop目录下的sbin下面执行,上面说了journalNode要3个,所以3台机器上都要执行

./hadoop-daemon.sh start journalnode

15. 格式化HDFS(在主节点上执行),这个命令在bin下

./hdfs namenode -format

然后将/usr/local/hadoop/hadoop-2.7.4/tmp拷贝到从节点的相同目录下

16. 初识化zookeeper,主节点上执行一次就可以了

./hdfs zkfc -formatZK

17. 启动hadoop

start-all.sh

到这边为止hdfs已经可以用了。

18. yarn的resourceManager的从节点需要单独启动一下

yarn-daemon.sh start resourcemanager

 

hadoop的安装真的很复杂。。。

官网链接:

hdfs的高可用: http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html

resourceManager高可用: http://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/ResourceManagerHA.html

 

转载请注明出处:https://blog.csdn.net/redstarofsleep/article/details/83024189

你可能感兴趣的:(hadoop)