Building Hadoop Cluster

 

Hadoop Cluster的搭建

1. 下载Hadoop

源代码-官方源-3.1.3 Binary-官方源-3.1.3

源代码-清华源-3.1.3 Binary-清华源-3.1.3

2. 安装Java

Java版本:Java 8 

  • 安装Oracle JDK 1.8 (preferred) 
      sudo apt-get purge openjdk* 
      sudo apt-get install software-properties-common 
      sudo add-apt-repository ppa:webupd8team/java 
      sudo apt-get update 
      sudo apt-get install oracle-java8-installer 
    
  • 配置java目录 

找到java安装目录 

readlink -f $(which java) 

将bin之前的路径写入etc/hadoop/hadoop-env.sh中的export JAVA_HOME= 

HADOOP_HOME定义在/etc/profile.d或者~/.bashrc

3. 配置文件 

  • 1) etc/hadoop/core-site.xml  ```xml
      fs.defaultFS      hdfs://localhost:9000   hadoop.tmp.dir     /home/guest/hadoop/data/tmp   

 


* 2) ```etc/hadoop/hdfs-site.xml ```
```xml
<configuration> 
  <property> 
    <!--将replication下复制的份数改为1-->
    <name>dfs.replication</name> 
    <value>1</value> 
  </property> 
 <!-- for namenode --> 
  <property> 
    <!--更改datanode的储存路径-->
    <name>dfs.namenode.name.dir</name> 
    <value>/home/guest/hadoop/name</value> 
  </property> 
  <property> 
    <name>dfs.namenode.ec.system.default.policy</name> 
    <value>RS-3-2-1024k</value> 
  </property> 
 <!-- namenode end --> 

  <property> 
    <name>dfs.datanode.data.dir</name> 
    <value>/home/guest/hadoop/data</value> 
  </property> 
</configuration> 

4. 配置DataNodes 

etc/hadoop/workers指明DataNodes的地址

5. 配置SSH 

由于hadoop是用ssh来连接各个node的,需要将各个机器的公钥添加到namenode当中。

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

6. 启动 

  • 1) 格式化namenode文件系统 
    $ bin/hdfs namenode -format 
    
  • 2) 启动hdfs 
    $ sbin/start-dfs.sh 
    

    NameNode HTTP服务器端口:9870 

DataNode HTTP服务器端口:9864 


退出hdfs:
```bash
$ sbin/stop-dfs.sh 

 

7. 配置Erasure Coding: 

  • 1) 在NameNode的hdfs-site.xml中配置默认policy  ``` dfs.namenode.ec.system.default.policy 

optional: RS-3-2-1024k, RS-6-3-1024k, RS-10-4-1024k, RS-LEGACY-6-3-1024k, XOR-2-1-1024k and REPLICATION 

* 2) 启用Erasure Coding Policy
```bash
bin/hdfs ec [-enablePolicy -policy <policyName>] 
bin/hdfs ec -setPolicy [-policy <policy>] -path <path>