[목 차]

테스트 환경

  • OS: CentOS 6.6
  • 클러스터 환경: 1대의 master 와 2대의 slave

1. yum 저장소 변경

CentOS yum을 사용하기 위해서 yum 저장소를 국내 서버로 변경해야 한다.

1.1 기존 저장소 압축 보존

$ sudo bzip2 /etc/yum.repos.d/CentOS-*.repo
$ sudo yum repolist

1.2 Daum.repo 파일 생성

$ su -
[root]$ echo '[base]
name=CentOS-$releasever - Base
baseurl=http://ftp.daum.net/centos/$releasever/os/$basearch/
gpgcheck=0
[updates]
name=CentOS-$releasever - Updates
baseurl=http://ftp.daum.net/centos/$releasever/updates/$basearch/
gpgcheck=0
[extras]
name=CentOS-$releasever - Extras
baseurl=http://ftp.daum.net/centos/$releasever/extras/$basearch/
gpgcheck=0' > /etc/yum.repos.d/Daum.repo

$ sudo yum repolist

1.3 업데이트

$ sudo yum -y update

2. Java 설치

hadoop은 java로 구현되었기 때문에 java를 반드시 설치해야 한다.

2.1 Java 설치

$ sudo yum install java-1.7.0-openjdk-devel.x86_64 -y

2.2 JAVA_HOME 등록

JAVA_HOME을 등록한다. root와 hadoop 계정 모두 등록한다.

$ sudo vi ~/.bashrc
$ vi ~/.bashrc
# JAVA_HOME
export JAVA_HOME="/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71.x86_64"
PATH=$JAVA_HOME/bin:$PATH

2.3 Java 설치 확인

$ java -version
java version "1.7.0_71"
OpenJDK Runtime Environment (rhel-2.5.3.1.el6-x86_64 u71-b14)
OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode)

3. Host 설정

3.1 Host Name 설정

master의 경우
$ sudo vi /etc/sysconfig/network
HOSTNAME=hadoop-1
slave1의 경우
$ sudo vi /etc/sysconfig/network
HOSTNAME=hadoop-2
slave2의 경우
$ sudo vi /etc/sysconfig/network
HOSTNAME=hadoop-3

3.2 Host 설정

마스터와 슬래이브 모두 설정

$ sudo vi /etc/hosts
192.168.10.8  hadoop-1
192.168.10.9  hadoop-2
192.168.10.10 hadoop-3

3.3 재부팅

설정 적용을 하려면 재부팅이 필요하다.

$ sudo reboot -f

4. SSH 설치 및 공개 키 설정

hadoop클러스터에서 master와 slave들 간에 통신은 SSH를 이용한다. 따라서 모든 컴퓨터들은 SSH를 설치 해야 하고, master에서 암호없이 slave에 접속하기 위해서 공개 키가 필요하다.

4.1 SSH 설치

ubuntu를 설치했을 경우는 기본적으로 ssh가 설치 되어있지만, 설치가 안되있다면 아래의 코드를 통해 설치

$ sudo yum install ssh

4.2 공개 키 설정

[slave] master ip 등록
$ sudo vi /etc/hosts.allow
sshd: 192.168.10.8 # master ip 또는 ALL
[master] 공개 키 생성
$ sudo vi /etc/ssh/sshd_config
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
$ chmod 755 ~/.ssh
$ chmod 644 ~/.ssh/authorized_keys
[master] master에서 생성한 공개 키를 모든 slave로 복사
$ scp /home/hadoop/.ssh/authorized_keys 192.168.10.9:/home/hadoop/.ssh/.
$ scp /home/hadoop/.ssh/authorized_keys 192.168.10.10:/home/hadoop/.ssh/.
접속 테스트
$ sudo /etc/init.d/sshd restart
$ ssh 192.168.10.9
$ ssh 192.168.10.10

행여 안될 경우에는 ssh-keygen -R 192.168.10.8 또는 known_hosts를 지우고 위의 공개 키 설정 절차를 다시 실행
(기존에 저장되있던 hosts(공개 키)때문에 안되는 경우가 발생함)

5. Hadoop 설치

5.1 hadoop Source 다운로드 및 압축 해제

$ mkdir ~/src
$ cd ~/src
$ wget http://mirror.apache-kr.org//hadoop/common/hadoop-2.5.2/hadoop-2.5.2-src.tar.gz
$ tar xvfz hadoop-2.5.2-src.tar.gz
$ ll
drwxr-xr-x. 15 hadoop hadoop     4096 Nov 14 15:44 hadoop-2.5.2-src
-rw-rw-r--.  1 hadoop hadoop 15434251 Nov 20 16:32 hadoop-2.5.2-src.tar.gz

5.2 hadoop 빌드

빌드도구 설치

dev 설치

$ sudo yum install libgcc_s.so.1 gcc-c++ cmake openssl-devel -y

$ cd ~/src
$ wget http://protobuf.googlecode.com/files/protobuf-2.5.0.tar.gz
$ tar -zxvf protobuf-2.5.0.tar.gz
$ cd protobuf-2.5.0
$ sudo ./configure --prefix=/usr/local/lib/protobuf-2.5.0
$ sudo make
$ sudo make install
$ export PATH=$PATH:/usr/local/lib/protobuf-2.5.0/bin
Maven 설치
$ wget http://apache.mirror.cdnetworks.com/maven/maven-3/3.0.5/binaries/apache-maven-3.0.5-bin.tar.gz
$ tar xvf apache-maven-3.0.5-bin.tar.gz
$ sudo ln -s /home/hadoop/apache-maven-3.0.5 /usr/local/maven

Mavne Home 설정

$ vi ~/.bashrc
#MAVEN_HOME
export MAVEN_HOME="/usr/local/maven"
export PATH=$MAVEN_HOME/bin:$PATH

설치확인

$ source ~/.bashrc
$ mvn -version
Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 05:51:28-0800)
Maven home: /usr/local/maven
Java version: 1.7.0_71, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "2.6.32-504.3.3.el6.x86_64", arch: "amd64", family: "unix"
Snappy 설치

https://code.google.com/p/snappy/ 에서 최신버전을 다운로드 하고 서버에 ftp로 전송한다.
https://code.google.com/p/snappy/downloads/detail?name=snappy-1.1.1.tar.gz

$ cd ~/scp
$ tar zxvf snappy-1.1.1.tar.gz
$ cd snappy-1.1.1
$ ./configure
$ make
$ sudo make install
hadoop 빌드
$ cd ~/src/hadoop-2.5.2-src
$ mvn package -Pdist,native -DskipTests -Dtar

$ mv ~/src/hadoop-2.5.2-src/hadoop-dist/target/hadoop-2.5.2 ~/
$ sudo cp /usr/local/lib/libsnappy.so* /hadoop/lib/native/

5.3 hadoop 환경설정

ln 추가
$ sudo ln -s /home/hadoop/hadoop-2.5.2 /hadoop
bashrc 설정
$ vi ~/.bashrc
# JAVA_HOME
export JAVA_HOME="/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71.x86_64"
PATH=$JAVA_HOME/bin:$PATH

# Hadoop
export HADOOP_HOME="/hadoop"
export HADOOP_PREFIX=$HADOOP_HOME
export PATH=$PATH:$HADOOP_PREFIX/bin
export PATH=$PATH:$HADOOP_PREFIX/sbin
export HADOOP_LOG_DIR="${HADOOP_PREFIX}/logs"
export HADOOP_MAPRED_HOME=${HADOOP_PREFIX}
export HADOOP_COMMON_HOME=${HADOOP_PREFIX}
export HADOOP_HDFS_HOME=${HADOOP_PREFIX}
export HADOOP_YARN_HOME=${HADOOP_PREFIX}
slave 등록

datanode가 동작하는 모든 컴퓨터를 등록

$ vi /hadoop/etc/hadoop/slaves
hadoop-1
hadoop-2
hadoop-3
hadoop-env.sh 설정

Hadoop이 실행하는 모든 프로세스에 적용되는 시스템 환경 값에 대한 스크립트
환경변수에 대해서 시스템 변수로 등록해 사용하는 방식이 아니라,
이 파일에 모든 환경 변수를 설정하고 이 파일을 전체 클러스터 노드에 복사해 사용함

$ vi /hadoop/etc/hadoop/hadoop-env.sh
# The java implementation to use.
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME="/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71.x86_64"

export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_PREFIX}/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib/native"
yarn-env.sh 설정
$ vi /hadoop/etc/hadoop/yarn-env.sh
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_PREFIX}/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib/native"
core-site.xml 설정

Hadoop 설치 후 로그파일, 네트워크 튜닝, I/O튜닝, 파일 시스템 튜닝, 압축 등과 같이 기본적인 하부 시스템 설정 맵리듀스에서도 공통으로 사용

$ sudo vi /hadoop/etc/hadoop/core-site.xml
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop-cluster</value>
    </property>
    <property>
        <name>ha.zookeeper.quorum</name>
        <value>hadoop-1:2181,hadoop-2:2181</value>
    </property>
</configuration>
yarn-site.xml

yarn과 관련된 데몬을 설정하는 파일이다.

$ sudo vi /hadoop/etc/hadoop/yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
    <property>
        <description>Classpath for typical applications.</description>
        <name>yarn.application.classpath</name>
        <value>
            $HADOOP_CONF_DIR,
            $HADOOP_COMMON_HOME/*,$HADOOP_COMMON_HOME/lib/*,
            $HADOOP_HDFS_HOME/*,$HADOOP_HDFS_HOME/lib/*,
            $HADOOP_MAPRED_HOME/*,$HADOOP_MAPRED_HOME/lib/*,
            $YARN_HOME/*,$YARN_HOME/lib/*
        </value>
    </property>

    <property>
        <name>yarn.resourcemanager.connect.retry-interval.ms</name>
        <value>2000</value>
    </property>
    <property>
        <name>yarn.resourcemanager.ha.enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>yarn.resourcemanager.cluster-id</name>
        <value>resourcemanager-cluster</value>
    </property>
    <property>
        <name>yarn.resourcemanager.ha.rm-ids</name>
        <value>rm1,rm2</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname.rm1</name>
        <value>hadoop-1</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname.rm2</name>
        <value>hadoop-2</value>
    </property>
    <property>
        <name>yarn.resourcemanager.zk-address</name>
        <value>hadoop-1:2181,hadoop-2:2181</value>
    </property>
    <property>
        <name>yarn.resourcemanager.ha.automatic-failover.enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>yarn.resourcemanager.ha.automatic-failover.embedded</name>
        <value>true</value>
    </property>
    <property>
        <name>yarn.client.failover-proxy-provider</name>
        <value>org.apache.hadoop.yarn.client.ConfiguredRMFailoverProxyProvider</value>
    </property>
    <property>
        <name>yarn.resourcemanager.store.class</name>
        <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
    </property>
    <property>
        <name>yarn.resourcemanager.ha.automatic-failover.zk-base-path</name>
        <value>/yarn-leader-election</value>
        <description>Optional setting. The default value is /yarn-leader-election</description>
    </property>
    <property>
        <name>yarn.resourcemanager.recovery.enabled</name>
        <value>true</value>
    </property>

    <!-- RM1 Configs -->
    <property>
        <name>yarn.resourcemanager.address.rm1</name>
        <value>hadoop-1:23140</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address.rm1</name>
        <value>hadoop-1:23130</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address.rm1</name>
        <value>hadoop-1:23188</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address.rm1</name>
        <value>hadoop-1:23125</value>
    </property>
    <property>
        <name>yarn.resourcemanager.admin.address.rm1</name>
        <value>hadoop-1:23141</value>
    </property>

    <!-- RM2 configs -->
    <property>
        <name>yarn.resourcemanager.address.rm2</name>
        <value>hadoop-2:23140</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address.rm2</name>
        <value>hadoop-2:23130</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address.rm2</name>
        <value>hadoop-2:23188</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address.rm2</name>
        <value>hadoop-2:23125</value>
    </property>
    <property>
        <name>yarn.resourcemanager.admin.address.rm2</name>
        <value>hadoop-2:23141</value>
    </property>
</configuration>
mapred-site.xml 설정

mapred-site.xml은 JobTracker와 Task Track과 같이 맵 리듀스 데몬을 위한 환경설정 파일이다.
해당 파일은 mapred-site.xml.template로 제공되며 mapred-site.xml로 변경하여 사용한다.

$ mv /hadoop/etc/hadoop/mapred-site.xml.template /hadoop/etc/hadoop/mapred-site.xml
$ sudo vi /hadoop/etc/hadoop/mapred-site.xml
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>

    <property>
        <name>mapred.system.dir</name>
        <value>file:/hadoop/repository/mapred/system</value>
        <final>true</final>
    </property>

    <property>
        <name>mapred.local.dir</name>
        <value>file:/hadoop/repository/mapred/local</value>
        <final>true</final>
    </property>
</configuration>
hdfs-site.xml 설정

dfs.replication 은 현재 4개 만 설치 하기 떄문이다.
hdfs-site.xml은 네임노드, 보조 네임노드, 데이터 노드 등과 같은 HDFS 데몬을 위한 환경설정 구성한다.
dfs.namenode.name.dir은 파일의 디렉토리 정보와 파일 정보 등을 저장하는 폴더이다.
해당 저장위치는 hdfs가 아닌 로컬에 저장을 한다.
dfs.datanode.name.dir은 하둡 파일 시스템에 저장되는 모든 파일이 저장되는 위치이다.

$ sudo vi /hadoop/etc/hadoop/hdfs-site.xml
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.name.dir</name>
        <value>file:/hadoop/repository/dfs/name</value>
        <final>true</final>
    </property>
    <property>
        <name>dfs.data.dir</name>
        <value>file:/hadoop/repository/dfs/data</value>
        <final>true</final>
    </property>
    <property>
        <name>fs.hdfs.impl</name>
        <value>org.apache.hadoop.hdfs.DistributedFileSystem</value>
        <description>The FileSystem for hdfs: uris.</description>
    </property>

    <!-- common server name -->
    <property>
        <name>dfs.nameservices</name>
        <value>hadoop-cluster</value>
    </property>
    <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/hadoop/jn</value>
    </property>

    <!-- HA configuration -->
    <property>
        <name>dfs.ha.namenodes.hadoop-cluster</name>
        <value>nn1,nn2</value>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.hadoop-cluster.nn1</name>
        <value>hadoop-1:8020</value>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.hadoop-cluster.nn2</name>
        <value>hadoop-2:8020</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.hadoop-cluster.nn1</name>
        <value>hadoop-1:50070</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.hadoop-cluster.nn2</name>
        <value>hadoop-2:50070</value>
    </property>

    <!-- Storage for edits' files -->
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://hadoop-1:8485;hadoop-2:8485/hadoop-cluster</value>
    </property>
    <property>
        <name>dfs.namenode.max.extra.edits.segments.retained</name>
        <value>1000000</value>
    </property>

    <!-- Client failover -->
    <property>
        <name>dfs.client.failover.proxy.provider.ha-nn</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>

    <!-- Fencing configuration -->
    <property>
        <name>dfs.ha.fencing.methods</name>
        <value>shell(/zookeeper/bin/zkServer.sh --nameservice=hadoop-cluster hadoop-1:8485)</value>
    </property>

    <!-- Automatic failover configuration -->
    <property>
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
    </property>
</configuration>
journal node 등록
$ vi /home/hadoop/hadoop-2.5.2/etc/hadoop/journalnodes
hadoop-1
hadoop-2

5.4 Slave 에 복사

$ scp -r /home/hadoop/hadoop-2.5.2 hadoop-2:/home/hadoop/
$ scp -r /home/hadoop/hadoop-2.5.2 hadoop-3:/home/hadoop/

각 노드마다 ln을 걸어준다.

$ sudo ln -s /home/hadoop/hadoop-2.5.2 /hadoop
Check Native
hadoop checknative
Native library checking:
hadoop: true /home/hadoop/hadoop-2.5.2/lib/native/libhadoop.so.1.0.0
zlib:   true /lib64/libz.so.1
snappy: true /home/hadoop/hadoop-2.5.2/lib/native/libsnappy.so.1
lz4:    true revision:99
bzip2:  false

6. Zookeeper 설치

6.1 zookeeper 다운로드 및 압축 해제

$ cd /home/hadoop
$ wget http://apache.mirror.cdnetworks.com/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
$ tar xvfz zookeeper-3.4.6.tar.gz
$ ll
drwxr-xr-x. 12 hadoop hadoop      4096 Dec 15 17:13 zookeeper-3.4.6
-rw-rw-r--.  1 hadoop hadoop  17699306 Oct 31 06:48 zookeeper-3.4.6.tar.gz

6.2 zookeeper 환경설정

ln 추가
$ sudo ln -s /home/hadoop/zookeeper-3.4.6 /zookeeper
bashrc 설정
$ vi ~/.bashrc
# Zookeeper
export ZOOKEEPER_HOME=/zookeeper
export ZOOKEEPER_PREFIX=$ZOOKEEPER_HOME
export ZOO_LOG_DIR=$ZOOKEEPER_HOME/logs
PATH=$ZOOKEEPER_HOME/bin:$PATH
zoo.cfg 설정
$ mv /zookeeper/conf/zoo_sample.cfg /zookeeper/conf/zoo.cfg
$ vi /zookeeper/conf/zoo.cfg
dataDir=/zookeeper/data
dataLogDir=/zookeeper/logs

server.1=hadoop-1:2888:3888
server.2=hadoop-2:2888:3888
폴더 생성
$ mkdir /zookeeper/data
$ mkdir /zookeeper/logs

6.3 Slave 에 복사

$ scp -r /home/hadoop/zookeeper-3.4.6 hadoop-2:/home/hadoop/

각 node 마다 ln을 걸어준다.

$ sudo ln -s /home/hadoop/zookeeper-3.4.6 /zookeeper

각 node 마다 myid 파일을 생성하여 id를 입력해야 한다.

hadoop-1$ echo '1' > /zookeeper/data/myid
hadoop-2$ echo '2' > /zookeeper/data/myid

6.4 zookeeper 실행

Master 와 Slave 따로 실행시켜야 한다.

$ $ZK_HOME/bin/zkServer.sh start

6.5 동작 확인

Master
$ jps
5150 QuorumPeerMain
Slave1
$ jps
2955 QuorumPeerMain

6.6 hadooop 실행

namenode 포맷전 journalnode 실행

namenode의 nameservice에 등록된 모든 호스트에 실행 (hadoop-1, hadoop-2)

$ hadoop-daemon.sh start journalnode
namenode 포맷(master 에서 실행)
$ hdfs namenode -format
secondary namenode 에 name 디렉토리 복사
$ scp -r /hadoop/repository/dfs/name hadoop-2:/hadoop/repository/dfs/name
hadoop 서버시작(master 에서 실행)
$ $HADOOP_HOME/sbin/start-all.sh
standby resourcemanager 실행 (slave1 에서 실행)
$yarn-daemon.sh start resourcemanager

6.7 동작 확인

Master
$ jps
5150 QuorumPeerMain
2488 NameNode
3022 NodeManager
2921 ResourceManager
6530 journalnode
2587 DataNode
5785 DFSZKFailoverController
netstat -ntpl|grep LISTEN
http://192.168.10.8:8088/
http://192.168.10.8:50075/
http://192.168.10.8:50090/
Slave1
$ jps
4267 DFSZKFailoverController
3242 journalnode
6543 NameNode
2777 NodeManager
2955 QuorumPeerMain
1654 ResourceManager
2670 DataNode
Slave2
$ jps
2777 NodeManager
2670 DataNode
ResourceManager Active/Standby 확인
$yarn rmadmin -getServiceState (rm1 or rm2)

7. Hbase 설치

7.1 hbase Source 다운로드 및 압축 해제

$ cd ~/src
$ wget http://mirror.apache-kr.org/hbase/hbase-0.99.2/hbase-0.99.2-src.tar.gz
$ tar xvfz hbase-0.99.2-src.tar.gz
$ ll
drwxrwxr-x. 22 hadoop hadoop     4096 Dec 29 16:22 hbase-0.99.2
-rw-rw-r--.  1 hadoop hadoop  6642444 Dec  7 19:03 hbase-0.99.2-src.tar.gz

7.2 hbase 빌드

$ cd ~/src/hbase-0.99.2
$ mvn -DskipTests clean install && mvn -DskipTests package assembly:single

$ mv /home/hadoop/src/hbase-0.99.2/hbase-assembly/target/hbase-0.99.2-bin.tar.gz ~/
$ tar zxvf hbase-0.99.2-bin.tar.gz

7.3 hbase 환경설정

ln 추가
$ sudo ln -s /home/hadoop/hbase-0.99.2/ /hbase
bashrc 설정
$ vi ~/.bashrc
# Hbase
export HBASE_HOME=/hbase
export HBASE_CONF_DIR=$HBASE_HOME/conf
PATH=$HBASE_HOME/bin:$PATH
hbase-env.sh
$ vi /hbase/conf/hbase-env.sh
# The java implementation to use.  Java 1.7+ required.
export JAVA_HOME="/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71.x86_64"

# Extra Java CLASSPATH elements.  Optional.
export HBASE_CLASSPATH=/hadoop
export HBASE_LIBRARY_PATH=/hadoop/lib/native/

export HBASE_MANAGES_ZK=false
regionservers

regionservers 를 가동할 호스트 주소를 적어준다.

$ vi /hbase/conf/regionservers
hadoop-1
hadoop-2
hadoop-3
hbase-site-xml
$ sudo vi /hbase/conf/hbase-site.xml
<configuration>
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://hadoop-cluster/hbase</value>
    </property>
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>hadoop-1,hadoop-2</value>
    </property>
    <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/zookeeper/data</value>
    </property>
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <property>
        <name>hbase.dynamic.jars.dir</name>
        <value>/hbase/lib</value>
    </property>
    <property>
        <name>hbase.hregion.max.filesize</name>
        <value>1073741824</value>
    </property>

    <property>
        <name>hbase.regionserver.handler.count</name>
        <value>100</value>
    </property>
    <property>
        <name>hfile.block.cache.size</name>
        <value>0.5</value>
    </property>
    <property>
        <name>hbase.regionserver.global.memstore.lowerLimit</name>
        <value>0.2</value>
    </property>
    <property>
        <name>hbase.regionserver.global.memstore.size</name>
        <value>0.3</value>
    </property>
    <property>
        <name>ipc.client.tcpnodelay</name>
        <value>true</value>
    </property>
    <property>
        <name>ipc.server.tcpnodelay</name> 
        <value>true</value>
    </property>
    <property>
        <name>hbase.ipc.client.tcpnodelay</name>
        <value>true</value>
    </property>
</configuration>
regionservers.sh
$ vi /hbase/bin/regionservers.sh
ssh $HBASE_SSH_OPTS $regionserver $"${@// /\\ } -D hbase.regionserver.port=16200 -D hbase.regionserver.info.port=16300" \
backup-masters

백업 마스터 설정

$vi /hbase/conf/backup-masters
hadoop-2
hadoop 설정파일 복사

hadoop 클러스터에 연결 하기 위한 설정 복사

$cp /hadoop/etc/hadoop/core-site.xml /hbase/conf/
$cp /hadoop/etc/hadoop/hdfs-site.xml /hbase/conf/

7.4 Slave 에 복사

$ scp -r /home/hadoop/hbase-0.99.2/ hadoop-2:/home/hadoop/

각 노드마다 ln을 걸어준다.

$ sudo ln -s /home/hadoop/hbase-0.99.2/ /hbase

7.5 hbase 실행

$ $HBASE_HOME/bin/start-hbase.sh

7.6 동작 확인

Master
$ jps
8948 HMaster
8954 HRegionServer
Slave
$ jps
11306 HRegionServer
Check Native
hbase --config ./conf org.apache.hadoop.util.NativeLibraryChecker

'Bigdata' 카테고리의 다른 글

elasticsearch rest api 모음  (0) 2016.01.27
Apache Zepplin 설치 하기  (1) 2016.01.20
Apache Spark 설치 하기  (0) 2016.01.20
Posted by satis
,