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

<configuration>
  <!-- 指定hdfs的nameservice为nameService1-->
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://nameService1</value>
  </property>
  <!-- 指定hadoop临时目录 -->
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/usr/local/hadoop/hadoop-2.7.4/tmp</value>
  </property>
  <!-- zookeeper集群地址 -->
  <property>
    <name>ha.zookeeper.quorum</name>
    <value>server229:2181,server229:2182,server225:2181</value>
  </property>
</configuration>

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

9. 配置hdfs-site.xml

<configuration>
  <!--指定hdfs的nameservice为nameService1,需要和core-site.xml中的保持一致 -->
  <property>
    <name>dfs.nameservices</name>
    <value>nameService1</value>
  </property>
  <property>
    <name>dfs.ha.namenodes.nameService1</name>
    <value>nameNode1,nameNode2</value>
  </property>
  <property>
    <name>dfs.namenode.rpc-address.nameService1.nameNode1</name>
    <value>server227:9000</value>
  </property>
  <property>
    <name>dfs.namenode.http-address.nameService1.nameNode1</name>
    <value>server227:50070</value>
  </property>
  <property>
    <name>dfs.namenode.rpc-address.nameService1.nameNode2</name>
    <value>server228:9000</value>
  </property>
  <property>
    <name>dfs.namenode.http-address.nameService1.nameNode2</name>
    <value>server228:50070</value>
  </property>
  <!-- 指定NameNode的日志在JournalNode上的存放位置 -->
  <property>
    <name>dfs.namenode.shared.edits.dir</name>
    <value>qjournal://server227:8485;server228:8485;server225:8485/nameService1</value>
  </property>
  <!-- 指定JournalNode在本地磁盘存放数据的位置 -->
  <property>
    <name>dfs.journalnode.edits.dir</name>
    <value>/usr/local/hadoop/hadoop-2.7.4/journal</value>
  </property>
  <!-- 开启NameNode失败自动切换 -->
  <property>
    <name>dfs.ha.automatic-failover.enabled</name>
    <value>true</value>
  </property>
  <!-- 配置失败自动切换实现方式 -->
  <property>
    <name>dfs.client.failover.proxy.provider.nameService1</name>
    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
  </property>
  <!-- 配置隔离机制方法,多个机制用换行分割,即每个机制占用一行-->
  <property>
    <name>dfs.ha.fencing.methods</name>
    <value>
      sshfence
      shell(/bin/true)
    </value>
  </property>
  <!-- 使用sshfence隔离机制时需要ssh免登陆 -->
<property>
    <name>dfs.ha.fencing.ssh.private-key-files</name>
    <value>/root/.ssh/id_rsa</value>
  </property>
  <!-- 配置sshfence隔离机制超时时间 -->
  <property>
    <name>dfs.ha.fencing.ssh.connect-timeout</name>
    <value>30000</value>
  </property>


</configuration>

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

10. 配置mapred-site.xml

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

11. 配置yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->
  <!-- 开启RM高可靠 -->
  <property>
    <name>yarn.resourcemanager.ha.enabled</name>
    <value>true</value>
  </property>
  <!-- 指定RM的cluster id -->
  <property>
    <name>yarn.resourcemanager.cluster-id</name>
    <value>yrc</value>
  </property>
  <!-- 指定RM的名字 -->
  <property>
    <name>yarn.resourcemanager.ha.rm-ids</name>
    <value>resourceManager1,resourceManager2</value>
  </property>
  <!-- 分别指定RM的地址 -->
  <property>
    <name>yarn.resourcemanager.hostname.resourceManager1</name>
    <value>server227</value>
  </property>
  <property>
    <name>yarn.resourcemanager.hostname.resourceManager2</name>
    <value>server228</value>
  </property>
  <!-- 指定zk集群地址 -->
  <property>
    <name>yarn.resourcemanager.zk-address</name>
    <value>server229:2181,server229:2182,server225:2181</value>
  </property>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
</configuration>

这主要是配置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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值