'java'에 해당되는 글 5건

  1. 2016.04.14 storm Hello World
  2. 2016.04.10 RabbitMQ Hello World
  3. 2016.04.08 spark + cassandra 연동
  4. 2012.08.04 Hive java connection 설정
  5. 2012.06.18 hadoop 설치 (2)

Storm 을 소개하는 글을 보면 보통 실시간 데이터 처리용 이라고들 하더라.

아무튼 어찌되었든 쓰긴할것처럼 보여서 일단 Hello World 찍어보고 .기본사용법만 익혀본다.


완전 java 로 만들어져있는것처럼 

다른 opensource 마냥 무언가 application 을 설치하는 형태라고 보긴 모호한것같다.



사용 버전 : 0.9.6 

사용노드 수 : 6대 ( 1 : nimbus , 5 : supervisor )

주키퍼 버전 : 3.4.6 (원래쓰던거임으로 ~ 일단 이건 패스)


수정한 설정파일 내역

주키퍼설정, 디렉토리 , 호트 , 슬롯포트 정도만 넣었다.

conf 디렉토리의 storm.yaml 파일만 수정하고 모든 노드에 동일하게 적용. 


########### These MUST be filled in for a storm configuration

storm.zookeeper.servers:

     - "192.168.0.112"

     - "192.168.0.113"

     - "192.168.0.114"

     - "192.168.0.115"

     - "192.168.0.116"



storm.local.dir: "/apps/strm/data"


nimbus.host: "192.168.0.111"

supervisor.slots.ports:

    - 6700

    - 6701

    - 6702

    - 6703


ui.port: 6799



설정후 백그라운드 실행을 하면

자바프로세스명으로 nimbus ( 마스터 노드 ? )

나머지 5대노드에선 (supervisor ) 라고 보일것이다.    

그리고 마스터 노드에선 ( nimbus 가 있는 노드 ) ui 도 띄웠다. 


전부 백드라운드로 실행함.  


UI 화면 ( http://192.168.0.111:6799/index.html )




HelloWorld 찍을 소스 ( 책보고 만듬 : 책이름 : 에이콘꺼 아파치 Storm을 이용한 분산 실시간 빅데이터 처리 - 도움된다. 적절히 ㅋ ) 

스톰의 HelloWorld 는 단어세기라고 한다. 우리 그 뭐시냐 빅데이터 RM 테스트할때도 단어세기가 대표적이니.이것도 마찬가지인듯.

(아래소스는 싱글노드용이나 마찬가지다. 클러스토로 할땐 다른클래스를 호출해서 써야하던데 그건 다음기록에;;;)


테스트한 단어 배열 ( 미국 국가라고 한다 - 검색해서 대충 복사함 )


Spout 부분

public class TestSpout extends BaseRichSpout 

{

private SpoutOutputCollector collector;

private String[] test_str = 

{

"Oh, say can you see, by the dawn’s early light,",

"What so proudly we hailed at the twilight’s last gleaming?",

"Whose broad stripes and bri",

"ght stars, through the perilous fight,",

"O’er the ramparts we watched, were so gallantly streaming?",

"And the rockets’red glare, the bombs bursting in air,",

"Gave proof through the night that our flag was still there.",

"Oh say, does that star spangled banner yet wave",

"O’er the land of the free and the home of the brave?"

};

private int index = 0;

/*  

    public static void main( String[] args )

    {

        System.out.println( "Hello World!" );

    }

*/

@Override

public void declareOutputFields(OutputFieldsDeclarer arg0) {

// TODO Auto-generaated method stub

System.out.println("sput declareoutputfields!!!");

arg0.declare(new Fields("sentence"));

}


@Override

public void open(Map arg0, TopologyContext arg1, SpoutOutputCollector arg2) {

// TODO Auto-generated method stub

System.out.println("sput open!!!");

this.collector = arg2;

}

@Override

public void nextTuple() {

// TODO Auto-generated method stub

System.out.println("sput nexttuple!!!");

this.collector.emit(new Values(test_str[index]));

index++;

System.out.println("sput nexttuple =======" + index);

System.out.println(index + "<<<<<<<<<<<<<<<<<<<=============================>>>>>>>>>>>>>>>>>>>>>" + test_str.length);

if ( index >= test_str.length)

{

index = 0;

System.out.println("sput nexttuple =======zero ===============" + 0);

}

waitForSeconds(1);

System.out.println("next tupple last");

}


public static void waitForSeconds(int seconds) {

        try {

            Thread.sleep(seconds * 1);

        } catch (InterruptedException e) {

        }

    }


}


Bolt부분 ( 문장배열 분리 )

public class TestBolt extends BaseRichBolt {


private OutputCollector collector;

@Override

public void declareOutputFields(OutputFieldsDeclarer arg0) {

// TODO Auto-generated method stub

System.out.println("==================== declare ====================");

arg0.declare(new Fields("word")); 

}

@Override

public void prepare(Map arg0, TopologyContext arg1, OutputCollector arg2) {

// TODO Auto-generated method stub

System.out.println("bolt prepare!!!");

this.collector = arg2;

}

@Override

public void execute(Tuple arg0) {

// TODO Auto-generated method stub

System.out.println("bolt execute!!!");

String sentence = arg0.getStringByField("sentence");

String[] words = sentence.split(" ");

for(String word: words)

{

this.collector.emit(new Values(word));

System.out.println("bolt execute!!! === >>>>>>>>>>>>>>>> " + word);

}

}


Bolt부분 두번째 ( 분리한 문장과 단어에서 단어 수 체크  작업 )

public class Test2Bolt extends BaseRichBolt {


private OutputCollector collector;

private HashMap<String,Long> counts = null;

@Override

public void prepare(Map arg0, TopologyContext arg1, OutputCollector arg2) {

// TODO Auto-generated method stub

System.out.println("test2 prepare");

this.collector = arg2;

this.counts = new HashMap<String, Long>();

}

@Override

public void execute(Tuple arg0) {

// TODO Auto-generated method stub

System.out.println("test2 execute");

String word = arg0.getStringByField("word");

Long count = this.counts.get(word);

if(count == null)

{

count = 0L;

}

count++;

this.counts.put(word, count);

this.collector.emit(new Values(word,count));

}



@Override

public void declareOutputFields(OutputFieldsDeclarer arg0) {

// TODO Auto-generated method stub

System.out.println("test2 declareoutput");

arg0.declare( new Fields("word","count"));

}


}



Bolt부분 세번째 ( 결과 출력 부분 )

public class ResultBolt extends BaseRichBolt {


private HashMap<String,Long> counts = null;

@Override

public void execute(Tuple arg0) {

// TODO Auto-generated method stub

String word = arg0.getStringByField("word");

Long count = arg0.getLongByField("count");

this.counts.put(word, count);

}


@Override

public void prepare(Map arg0, TopologyContext arg1, OutputCollector arg2) {

// TODO Auto-generated method stub

this.counts = new HashMap<String, Long>();

}


@Override

public void declareOutputFields(OutputFieldsDeclarer arg0) {

// TODO Auto-generated method stub

System.out.println("====================== This is result declare ================");

}

public void cleanup()

{

System.out.println("====================== Result ========================");

List<String> keys = new ArrayList<String>();

keys.addAll(this.counts.keySet());

Collections.sort(keys);

for (String key : keys)

{

System.out.println("======> " + key + "=======>>>>>>" + this.counts.get(key));

}

System.out.println("====================== Result ========================");

}


}




토폴로지 구현

이게 java 로 말하면 main 인듯.

토폴로지 부분을 보면 SPOUT 에들어간 인스턴스 넣고 , 이놈이 다음 볼트에 들어가고 , 그놈이 또 다음볼트 , 이놈이 또 다음볼트 이렇게 

들어가는것처럼 보인다.


해당 책을 가지고 있다면 글에도 써있겠지만 로컬테스트에선 이상없는데 난 일단 운영서버처럼 서버구성후 클러스터로 돌려서 그런지

이게 무한대로 돌더라~ 


그래서 아래 토폴로지 소스의 빨간색부분을 보면 이게 출력하는 매쏘드 인데.

이걸 직접 호출함. 아무튼 그런거같음 ㅋ


그러니 책있는 사람중에 노드 구현해서 테스트하는 사람은 . 저거 넣어줘야 출력이 될것임.


public class TestTolpo {


private static final String SENDENCE_SPOUT_ID = "test_spout_id";

private static final String SPLIT_BOLT_ID = "test_split_bolt_id";

private static final String COUNT_BOLT_ID = "test_count_bolt_id";

private static final String RESULT_BOLT_ID = "test_result_bolt_id";

private static final String TOPOL_NAME = "tpol_name";

public static void main(String[] args) throws Exception {

TestSpout ts = new TestSpout();

TestBolt tb1 = new TestBolt();

Test2Bolt tb2 = new Test2Bolt();

ResultBolt rs = new ResultBolt();

TopologyBuilder build = new TopologyBuilder();

System.out.println("======================== bolt set ========================== ");

build.setSpout(SENDENCE_SPOUT_ID, ts);

build.setBolt(SPLIT_BOLT_ID, tb1).shuffleGrouping(SENDENCE_SPOUT_ID);

build.setBolt(COUNT_BOLT_ID, tb2).fieldsGrouping(SPLIT_BOLT_ID, new Fields("word"));

build.setBolt(RESULT_BOLT_ID, rs).globalGrouping(COUNT_BOLT_ID);

Config cf = new Config();

System.out.println("======================== cluster regist ========================== ");

LocalCluster cluster = new LocalCluster();

cluster.submitTopology(TOPOL_NAME,cf,build.createTopology());

System.out.println("======================== submit ========================== ");

waitForSeconds(20);

System.out.println("======================== 10 s ========================== ");

cluster.killTopology(TOPOL_NAME);

rs.cleanup();

System.out.println("======================== kill ========================== ");

cluster.shutdown();

System.out.println("======================== shutdown ========================== ");

}

public static void waitForSeconds(int seconds) {

        try {

            Thread.sleep(seconds * 1000);

        } catch (InterruptedException e) {

        } 

    }

}




위의 소스를 가지고 jar로 만들어준다음 ( 난 maven 씀 )

storm 토폴로지에 등록시켜서 실행해본다.

 ./storm jar /home/hadoop/chapter1-0.0.1-SNAPSHOT.jar storm.blueprint.chapter1.TestTolpo 


이러면 자바로 뭐 막 이것저것 쭉쭉 등록하고 어쩌구 저쩌구 실행이 되는과정이 나온다. ㅋ 

======================== bolt set ==========================

======================== cluster regist ==========================

2126 [main] INFO  org.apache.storm.zookeeper.ZooKeeper - Client environment:zookeeper.version=3.4.6-1569965, built on 02/20/2014 09:09 GMT

2130 [main] INFO  org.apache.storm.zookeeper.ZooKeeper - Client environment:host.name=os1.local

2130 [main] INFO  org.apache.storm.zookeeper.ZooKeeper - Client environment:java.version=1.8.0_77

2130 [main] INFO  org.apache.storm.zookeeper.ZooKeeper - Client environment:java.vendor=Oracle Corporation

2131 [main] INFO  org.apache.storm.zookeeper.ZooKeeper - Client environment:java.home=/apps/j2se/jre

2131 [main] INFO  org.apache.storm.zookeeper.ZooKeeper - Client environment:java.class.path=/apps/strm/lib/storm-core-0.9.6.jar:/apps/strm/lib/ring-jetty-adapter-0.3.11.jar:/apps/strm/lib/clout-1.0.1.jar:/apps/strm/lib/joda-time-2.0.jar:/apps/strm/lib/

math.numeric-tower-0.0.1.jar:/apps/strm/lib/clojure-1.5.1.jar:/apps/strm/lib/jline-2.11.jar:/apps/strm/lib/compojure-1.1.3.jar:/apps/strm/lib/logback-core-1.0.13.jar:/apps/strm/lib/commons-codec-1.6.jar:/apps/strm/lib/jetty-6.1.26.jar:/apps/strm/lib/kr

yo-2.21.jar:/apps/strm/lib/ring-core-1.1.5.jar:/apps/strm/lib/disruptor-2.10.4.jar:/apps/strm/lib/commons-logging-1.1.3.jar:/apps/strm/lib/core.incubator-0.1.0.jar:/apps/strm/lib/logback-classic-1.0.13.jar:/apps/strm/lib/jetty-util-6.1.26.jar:/apps/str

m/lib/hiccup-0.3.6.jar:/apps/strm/lib/commons-fileupload-1.2.1.jar:/apps/strm/lib/objenesis-1.2.jar:/apps/strm/lib/commons-io-2.4.jar:/apps/strm/lib/json-simple-1.1.jar:/apps/strm/lib/commons-lang-2.5.jar:/apps/strm/lib/ring-devel-0.3.11.jar:/apps/strm

/lib/ring-servlet-0.3.11.jar:/apps/strm/lib/servlet-api-2.5.jar:/apps/strm/lib/tools.cli-0.2.4.jar:/apps/strm/lib/asm-4.0.jar:/apps/strm/lib/carbonite-1.4.0.jar:/apps/strm/lib/tools.logging-0.2.3.jar:/apps/strm/lib/tools.macro-0.1.0.jar:/apps/strm/lib/

slf4j-api-1.7.5.jar:/apps/strm/lib/snakeyaml-1.11.jar:/apps/strm/lib/clj-stacktrace-0.2.2.jar:/apps/strm/lib/clj-time-0.4.1.jar:/apps/strm/lib/chill-java-0.3.5.jar:/apps/strm/lib/reflectasm-1.07-shaded.jar:/apps/strm/lib/commons-exec-1.1.jar:/apps/strm

/lib/log4j-over-slf4j-1.6.6.jar:/apps/strm/lib/minlog-1.2.jar:/apps/strm/lib/jgrapht-core-0.9.0.jar:/home/hadoop/chapter1-0.0.1-SNAPSHOT.jar:/apps/strm/conf:/apps/strm/bin

2131 [main] INFO  org.apache.storm.zookeeper.ZooKeeper - Client environment:java.library.path=/usr/local/lib:/opt/local/lib:/usr/lib

2131 [main] INFO  org.apache.storm.zookeeper.ZooKeeper - Client environment:java.io.tmpdir=/tmp

2131 [main] INFO  org.apache.storm.zookeeper.ZooKeeper - Client environment:java.compiler=<NA>

2131 [main] INFO  org.apache.storm.zookeeper.ZooKeeper - Client environment:os.name=Linux

2131 [main] INFO  org.apache.storm.zookeeper.ZooKeeper - Client environment:os.arch=amd64

2131 [main] INFO  org.apache.storm.zookeeper.ZooKeeper - Client environment:os.version=3.10.0-327.10.1.el7.x86_64

2131 [main] INFO  org.apache.storm.zookeeper.ZooKeeper - Client environment:user.name=hadoop

2131 [main] INFO  org.apache.storm.zookeeper.ZooKeeper - Client environment:user.home=/home/hadoop

2131 [main] INFO  org.apache.storm.zookeeper.ZooKeeper - Client environment:user.dir=/apps/strm/bin

2144 [main] INFO  org.apache.storm.zookeeper.server.ZooKeeperServer - Server environment:zookeeper.version=3.4.6-1569965, built on 02/20/2014 09:09 GMT

2145 [main] INFO  org.apache.storm.zookeeper.server.ZooKeeperServer - Server environment:host.name=os1.local

2145 [main] INFO  org.apache.storm.zookeeper.server.ZooKeeperServer - Server environment:java.version=1.8.0_77

2145 [main] INFO  org.apache.storm.zookeeper.server.ZooKeeperServer - Server environment:java.vendor=Oracle Corporation

2145 [main] INFO  org.apache.storm.zookeeper.server.ZooKeeperServer - Server environment:java.home=/apps/j2se/jre

2148 [main] INFO  org.apache.storm.zookeeper.server.ZooKeeperServer - Server environment:java.class.path=/apps/strm/lib/storm-core-0.9.6.jar:/apps/strm/lib/ring-jetty-adapter-0.3.11.jar:/apps/strm/lib/clout-1.0.1.jar:/apps/strm/lib/joda-time-2.0.jar:/a

pps/strm/lib/math.numeric-tower-0.0.1.jar:/apps/strm/lib/clojure-1.5.1.jar:/apps/strm/lib/jline-2.11.jar:/apps/strm/lib/compojure-1.1.3.jar:/apps/strm/lib/logback-core-1.0.13.jar:/apps/strm/lib/commons-codec-1.6.jar:/apps/strm/lib/jetty-6.1.26.jar:/app

s/strm/lib/kryo-2.21.jar:/apps/strm/lib/ring-core-1.1.5.jar:/apps/strm/lib/disruptor-2.10.4.jar:/apps/strm/lib/commons-logging-1.1.3.jar:/apps/strm/lib/core.incubator-0.1.0.jar:/apps/strm/lib/logback-classic-1.0.13.jar:/apps/strm/lib/jetty-util-6.1.26.

jar:/apps/strm/lib/hiccup-0.3.6.jar:/apps/strm/lib/commons-fileupload-1.2.1.jar:/apps/strm/lib/objenesis-1.2.jar:/apps/strm/lib/commons-io-2.4.jar:/apps/strm/lib/json-simple-1.1.jar:/apps/strm/lib/commons-lang-2.5.jar:/apps/strm/lib/ring-devel-0.3.11.j

ar:/apps/strm/lib/ring-servlet-0.3.11.jar:/apps/strm/lib/servlet-api-2.5.jar:/apps/strm/lib/tools.cli-0.2.4.jar:/apps/strm/lib/asm-4.0.jar:/apps/strm/lib/carbonite-1.4.0.jar:/apps/strm/lib/tools.logging-0.2.3.jar:/apps/strm/lib/tools.macro-0.1.0.jar:/a

pps/strm/lib/slf4j-api-1.7.5.jar:/apps/strm/lib/snakeyaml-1.11.jar:/apps/strm/lib/clj-stacktrace-0.2.2.jar:/apps/strm/lib/clj-time-0.4.1.jar:/apps/strm/lib/chill-java-0.3.5.jar:/apps/strm/lib/reflectasm-1.07-shaded.jar:/apps/strm/lib/commons-exec-1.1.j

ar:/apps/strm/lib/log4j-over-slf4j-1.6.6.jar:/apps/strm/lib/minlog-1.2.jar:/apps/strm/lib/jgrapht-core-0.9.0.jar:/home/hadoop/chapter1-0.0.1-SNAPSHOT.jar:/apps/strm/conf:/apps/strm/bin

2148 [main] INFO  org.apache.storm.zookeeper.server.ZooKeeperServer - Server environment:java.library.path=/usr/local/lib:/opt/local/lib:/usr/lib

2148 [main] INFO  org.apache.storm.zookeeper.server.ZooKeeperServer - Server environment:java.io.tmpdir=/tmp

2149 [main] INFO  org.apache.storm.zookeeper.server.ZooKeeperServer - Server environment:java.compiler=<NA>

2149 [main] INFO  org.apache.storm.zookeeper.server.ZooKeeperServer - Server environment:os.name=Linux

2149 [main] INFO  org.apache.storm.zookeeper.server.ZooKeeperServer - Server environment:os.arch=amd64

2149 [main] INFO  org.apache.storm.zookeeper.server.ZooKeeperServer - Server environment:os.version=3.10.0-327.10.1.el7.x86_64

2149 [main] INFO  org.apache.storm.zookeeper.server.ZooKeeperServer - Server environment:user.name=hadoop

2149 [main] INFO  org.apache.storm.zookeeper.server.ZooKeeperServer - Server environment:user.home=/home/hadoop

2149 [main] INFO  org.apache.storm.zookeeper.server.ZooKeeperServer - Server environment:user.dir=/apps/strm/bin

2993 [main] INFO  org.apache.storm.zookeeper.server.ZooKeeperServer - Created server with tickTime 2000 minSessionTimeout 4000 maxSessionTimeout 40000 datadir /tmp/0ff07ea0-be81-44fb-a9e1-c813c71bce61/version-2 snapdir /tmp/0ff07ea0-be81-44fb-a9e1-c813

c71bce61/version-2

3007 [main] INFO  org.apache.storm.zookeeper.server.NIOServerCnxnFactory - binding to port 0.0.0.0/0.0.0.0:2000

3014 [main] INFO  backtype.storm.zookeeper - Starting inprocess zookeeper at port 2000 and dir /tmp/0ff07ea0-be81-44fb-a9e1-c813c71bce61

3284 [main] INFO  backtype.storm.daemon.nimbus - Starting Nimbus with conf {"dev.zookeeper.path" "/tmp/dev-storm-zookeeper", "topology.tick.tuple.freq.secs" nil, "topology.builtin.metrics.bucket.size.secs" 60, "topology.fall.back.on.java.serialization"

 true, "topology.max.error.report.per.interval" 5, "zmq.linger.millis" 0, "topology.skip.missing.kryo.registrations" true, "storm.messaging.netty.client_worker_threads" 1, "ui.childopts" "-Xmx768m", "storm.zookeeper.session.timeout" 20000, "nimbus.reas

sign" true, "topology.trident.batch.emit.interval.millis" 50, "storm.messaging.netty.flush.check.interval.ms" 10, "nimbus.monitor.freq.secs" 10, "logviewer.childopts" "-Xmx128m", "java.library.path" "/usr/local/lib:/opt/local/lib:/usr/lib", "topology.e

xecutor.send.buffer.size" 1024, "storm.local.dir" "/tmp/6ab89940-328b-4454-b360-4dbe4e7dabc3", "storm.messaging.netty.buffer_size" 5242880, "supervisor.worker.start.timeout.secs" 120, "topology.enable.message.timeouts" true, "nimbus.cleanup.inbox.freq.

secs" 600, "nimbus.inbox.jar.expiration.secs" 3600, "drpc.worker.threads" 64, "storm.meta.serialization.delegate" "backtype.storm.serialization.DefaultSerializationDelegate", "topology.worker.shared.thread.pool.size" 4, "nimbus.host" "192.168.0.111", "

storm.messaging.netty.min_wait_ms" 100, "storm.zookeeper.port" 2000, "transactional.zookeeper.port" nil, "topology.executor.receive.buffer.size" 1024, "transactional.zookeeper.servers" nil, "storm.zookeeper.root" "/storm", "storm.zookeeper.retry.interv

alceiling.millis" 30000, "supervisor.enable" true, "storm.messaging.netty.server_worker_threads" 1, "storm.zookeeper.servers" ["localhost"], "transactional.zookeeper.root" "/transactional", "topology.acker.executors" nil, "topology.transfer.buffer.size

" 1024, "topology.worker.childopts" nil, "drpc.queue.size" 128, "worker.childopts" "-Xmx768m", "supervisor.heartbeat.frequency.secs" 5, "topology.error.throttle.interval.secs" 10, "zmq.hwm" 0, "drpc.port" 3772, "supervisor.monitor.frequency.secs" 3, "d

rpc.childopts" "-Xmx768m", "topology.receiver.buffer.size" 8, "task.heartbeat.frequency.secs" 3, "topology.tasks" nil, "storm.messaging.netty.



중간은 열라 길어서 패스 ~ ㅡ_ㅡ;;;;;;



====================== Result ========================

======> And=======>>>>>>1213

======> Gave=======>>>>>>1213

======> Oh=======>>>>>>1212

======> Oh,=======>>>>>>1213

======> O셞r=======>>>>>>2425

======> What=======>>>>>>1213

======> Whose=======>>>>>>1213

======> air,=======>>>>>>1213

======> and=======>>>>>>2425

======> at=======>>>>>>1213

======> banner=======>>>>>>1212

======> bombs=======>>>>>>1213

======> brave?=======>>>>>>1212

======> bri=======>>>>>>1213

======> broad=======>>>>>>1213

======> bursting=======>>>>>>1213

======> by=======>>>>>>1213

======> can=======>>>>>>1213

======> dawn셲=======>>>>>>1213

======> does=======>>>>>>1212

======> early=======>>>>>>1213

======> fight,=======>>>>>>1213

======> flag=======>>>>>>1213

======> free=======>>>>>>1212

======> gallantly=======>>>>>>1213

======> ght=======>>>>>>1213

======> glare,=======>>>>>>1213

======> gleaming?=======>>>>>>1213

======> hailed=======>>>>>>1213

======> home=======>>>>>>1212

======> in=======>>>>>>1213

======> land=======>>>>>>1212

======> last=======>>>>>>1213

======> light,=======>>>>>>1213

======> night=======>>>>>>1213

======> of=======>>>>>>2424

======> our=======>>>>>>1213

======> perilous=======>>>>>>1213

======> proof=======>>>>>>1213

======> proudly=======>>>>>>1213

======> ramparts=======>>>>>>1213

======> rockets셱ed=======>>>>>>1213

======> say=======>>>>>>1213

======> say,=======>>>>>>1212

======> see,=======>>>>>>1213

======> so=======>>>>>>2426

======> spangled=======>>>>>>1212

======> star=======>>>>>>1212

======> stars,=======>>>>>>1213

======> still=======>>>>>>1213

======> streaming?=======>>>>>>1213

======> stripes=======>>>>>>1213

======> that=======>>>>>>2425

======> the=======>>>>>>13339

======> there.=======>>>>>>1213

======> through=======>>>>>>2426

======> twilight셲=======>>>>>>1213

======> was=======>>>>>>1213

======> watched,=======>>>>>>1213

======> wave=======>>>>>>1212

======> we=======>>>>>>2426

======> were=======>>>>>>1213

======> yet=======>>>>>>1212

======> you=======>>>>>>1213

====================== Result ========================

55332 [Thread-4] INFO  backtype.storm.daemon.executor - Shut down executor test_result_bolt_id:[3 3]

55333 [Thread-4] INFO  backtype.storm.daemon.executor - Shutting down executor test_split_bolt_id:[4 4]

55334 [Thread-12-disruptor-executor[4 4]-send-queue] INFO  backtype.storm.util - Async loop interrupted!

55334 [Thread-13-test_split_bolt_id] INFO  backtype.storm.util - Async loop interrupted!

55335 [Thread-4] INFO  backtype.storm.daemon.executor - Shut down executor test_split_bolt_id:[4 4]

55336 [Thread-4] INFO  backtype.storm.daemon.executor - Shutting down executor test_spout_id:[5 5]

55339 [Thread-15-test_spout_id] INFO  backtype.storm.util - Async loop interrupted!

55339 [Thread-14-disruptor-executor[5 5]-send-queue] INFO  backtype.storm.util - Async loop interrupted!

55341 [Thread-4] INFO  backtype.storm.daemon.executor - Shut down executor test_spout_id:[5 5]

55342 [Thread-4] INFO  backtype.storm.daemon.executor - Shutting down executor __system:[-1 -1]

55342 [Thread-17-__system] INFO  backtype.storm.util - Async loop interrupted!

55343 [Thread-16-disruptor-executor[-1 -1]-send-queue] INFO  backtype.storm.util - Async loop interrupted!

55343 [Thread-4] INFO  backtype.storm.daemon.executor - Shut down executor __system:[-1 -1]

Storm 은개념이 안서면 쓰기힘들듯.

저작자 표시
신고
Posted by ORACLE,DBA,BIG,DATA,JAVA 흑풍전설

댓글을 달아 주세요

RabbitMQ HelloWorld 를 찍어보기로 한다.

원래 이건 인터넷 서핑중에 우연히 발견한 오픈소스? 이다. 

원래 얼랭을 뒤져보다가. 발견한건데. 메세지 서버로 쓸만하다. 메세지 큐서버 라고 해야하나??? 

아무튼 내가 X라고 보내면 서버에서 메세지를 가지고 있다가 받는쪽에서 X라고 받는 이런형태더라.


아래와 같은 형태로 HelloWorld를 찍기로 했다.


사용한 RabbitMQ 버전 : 3.6.1

Java Client 버전 : 3.6.1 ( 이건 당연히 이클립스에 서버콘솔쪽에 classpath추가함 )

JDK : 1.8



192.168.0.5 : 내가 작업하는 컴퓨터 ( 이클립스에서 Console java 하나 만들어서 실행 )

192.168.0.111 : RabbitMQ 서버가 설치된 서버

Console Result : 192.168.0.111안에 자바로 실행한 결과 받는 콘솔.



https://www.rabbitmq.com/ 에 있는 tutorial 에서 helloworld 를 그대로 실행하면 아래처럼 에러가 날것이다.

Exception in thread "main" com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile.

        at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:339)

        at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:716)

        at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:760)

        at mqtest.main(mqtest.java:21)


그도 그럴것이 rabbitmqctl 로 help를 살펴보면 웬 사용자 추가, 호스트설정, 퍼미션 어쩌구 저쩌구등이 있다.

그래서 그것들을 추가함.

대충 그럴듯한것들을 추가해봤다 ㅋㅋ


id : testman 

pw : 1234

vhost : /testhost

퍼미션은 전부를 준것같음 ( 인터넷 구글링 뒤져봤을땐 대충 그런거같음 ㅋㅋ 잘모르니;;; 나중에 자세히 파보면 또기록을 남길예정. ) 

[root@os1 ~]# rabbitmqctl add_user testman 1234

[root@os1 ~]# rabbitmqctl add_vhost /testhost

[root@os1 ~]# rabbitmqctl set_permissions -p /testhost testman ".*" ".*" ".*" 




192.168.0.111에 있는 자바소스 (받을놈)

import java.io.IOException;

import java.util.concurrent.TimeoutException;


import com.rabbitmq.client.ConnectionFactory;

import com.rabbitmq.client.Connection;

import com.rabbitmq.client.Channel;

import com.rabbitmq.client.Consumer;

import com.rabbitmq.client.Envelope;

import com.rabbitmq.client.AMQP;

import com.rabbitmq.client.DefaultConsumer;


public class mqrecv {

  private final static String QUEUE_NAME = "testqueue_namessssssss";


  public static void main(String[] argv)

      throws java.io.IOException,

             java.lang.InterruptedException {


    ConnectionFactory factory = new ConnectionFactory();

         factory.setHost("192.168.0.111");

            factory.setUsername("testman");

            factory.setPassword("1234");

            factory.setVirtualHost("/testhost");

    Connection connection;



        try {

                connection = factory.newConnection();



                Channel channel = connection.createChannel();


            channel.queueDeclare(QUEUE_NAME, false, false, false, null);

            System.out.println(" [*] Waiting for messages. To exit press CTRL+C");




        Consumer consumer = new DefaultConsumer(channel) {

              @Override

              public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body)

                  throws IOException {

                String message = new String(body, "UTF-8");

                System.out.println(" [x] Received '" + message + "'");

              }

            };

            channel.basicConsume(QUEUE_NAME, true, consumer);



        } catch (TimeoutException e) {


                e.printStackTrace();

        }



}

}


위에꺼 컴파일 하고 실행하면 아래처럼 나온다.

받을것대기중인상태.




그리고나서~



아래 보내는부분 만들기.


192.168.0.5인 내가 작업하는 곳 이클립스에서 사용한 소스 (보낼놈)


import java.util.concurrent.TimeoutException;


import com.rabbitmq.client.ConnectionFactory;

import com.rabbitmq.client.Connection;

import com.rabbitmq.client.Channel;


public class mqsend {

private final static String QUEUE_NAME = "testqueue_namessssssss";

public static void main(String[] args) throws java.io.IOException 

{

    ConnectionFactory factory = new ConnectionFactory();

    factory.setHost("192.168.0.111");

    factory.setUsername("testman");

    factory.setPassword("1234");

    factory.setVirtualHost("/testhost");

    Connection connection;

try {

connection = factory.newConnection();

Channel channel = connection.createChannel();

    channel.queueDeclare(QUEUE_NAME, false, false, false, null);

    String message = "Hello Ocmpromaster hahahahahahah !!!!!!";

    channel.basicPublish("", QUEUE_NAME, null, message.getBytes());

    System.out.println(" [x] Sent '" + message + "'");

    channel.close();

    connection.close();

    

} catch (TimeoutException e) {

e.printStackTrace();

}

    

}

}


위의 소스를 만들고 실행(메세지보내기) 하면 아래 이클립스 OutPut쪽에 send메세지가 보임.



위의 받는쪽 결과에 메세지에 이클립스에서 보낸 메세지가 바로 보인다 ㅋㅋㅋ~~~~ 오~~~~~~~~~~~~~




이제 이걸로 뭘할까 ㅡ_ㅡ;;;;;;;;;

우선 tutorial 부분몇개보고 내가 테스트중인 6노드 서버에 다 설치를 해서 뭔가를 해볼려고 한다. ~ 뭔가 쓸모가 있을듯. ㅎㅎ...

 

저작자 표시
신고
Posted by ORACLE,DBA,BIG,DATA,JAVA 흑풍전설

댓글을 달아 주세요

개놈에 카산드라 -- 연동 짜증난다 ㅋ

Hbase 연동을 먼저좀 해보려고 하다가 실패를 하고 짜증나서 카산드라 연동좀 시도해보고 성공후에 기록남김.


spark 버전 : 1.6.1 ( 하둡 2.7.2를 사용해서 하둡용으로 컴파일된 버전사용 )

cassandra 버전 : 3.4 

cassandra spark java connector 버전 : 1.5버전 사용.

node 수 : 6


cassandra 설치는 쉬우므로 내가 기록할 정보만 기록한다.

나는 6대로 계속 테스트중이므로~~~


참고로 모든 노드의 스펙은 아래와 같다. ( vmware 스펙 ㅋ )


카산드라 설정파일 작업부분.

위의 VM들을 가지고 모든 노드에 각각 아이피를 할당하여 설정한 설정정보만 남긴다.


카산드라의 분산및 리플리케이션을 위한 구성을 위해서 건드려야할 파일리스트 


cassandra.yaml

* 변경위치 : 

- listen_address : 해당노드의 아이피

- rpc_address : 해당노드의 아이피

- seed_provider의 seeds 부분 : 연결된노드 아이피들~~ "111.111.111.111,222.222.222.222" 이런식으로.


cassandra-env.sh

* 변경위치 :

- JVM_OPTS의 hostname 부분 : 해당노드의 아이피


여기까지 변경하고 cassandra를 실행하면 1개의 datacenter 에 1개의 rack 으로 해서 6개의 노드가 생겨지더라.


아래 두개파일로 datacenter 는 몇개로 할지 rack은 몇개로 할지 등을 설정.


cassandra-rackdc.properties


cassandra-topology.properties


카산드라 노드 연결된 상태 확인.

[hadoop@os1 bin]$ ./nodetool status

Datacenter: datacenter1

=======================

Status=Up/Down

|/ State=Normal/Leaving/Joining/Moving

--  Address        Load       Tokens       Owns (effective)  Host ID                               Rack

UN  192.168.0.111  201.03 KB  256          49.5%             e13656b7-1436-4011-bd1d-01042a2d75fc  rack1

UN  192.168.0.112  205.89 KB  256          47.7%             09ef262e-9013-4292-9ea8-98a32ebdadc1  rack1

UN  192.168.0.113  253.59 KB  256          47.7%             bad6d57a-3135-4dff-b546-21887d77aca6  rack1

UN  192.168.0.114  198.71 KB  256          49.3%             c2e5c7bc-b9a1-4751-9e6b-6179b20fc76f  rack1

UN  192.168.0.115  214 KB      256          53.8%             9f9d28e9-7e03-4653-a329-7aba65aaf5f0  rack1

UN  192.168.0.116  219.55 KB  256          52.1%             cffba9e0-19b3-4070-93ba-ecb4e6263e47  rack1


[hadoop@os1 bin]$ 


참고로 노드가 죽으면 DN 으로 바뀌더라;;;


이제 카산드라에 기본 데이터몇개 넣기.

* 설정파일이 로컬이아닌 아이피를 넣으니 cqlsh 만 치면 못찾더라 ㅋ

* 메뉴얼의 굵은글씨만 보고 일단 만들어서 실행 ㅋ


[hadoop@os1 bin]$ ./cqlsh 192.168.0.111

Connected to CASDR at 192.168.0.111:9042.

[cqlsh 5.0.1 | Cassandra 3.4 | CQL spec 3.4.0 | Native protocol v4]

Use HELP for help.

cqlsh> create keyspace keytest with replication = {'class' :'SimpleStrategy','replication_factor' : 3};

cqlsh>

cqlsh> use keytest;

cqlsh:keytest> create table test_table ( id varchar,name varchar,primary key(id));          

cqlsh:keytest> insert into test_table (id,name) values('2','fasdlkffasdffajfkls');

cqlsh:keytest> select *from test_table;


 id | name

----+-------------------------------

  3 | fasdlkfasdfasdfaffasdffajfkls

  2 |           fasdlkffasdffajfkls

  1 |     fasdlkfjafkljfsdklfajfkls


(3 rows)

cqlsh:keytest> 



* 현재 상황은 1~6번까지 노드가 있고 spark는 1번노드에 설치해놓음.

* 인터넷에 떠돌아 다니는 소스를 조합하여 몇몇가지 수정해서 실행함.

* 아래는 콘솔에서 짠 cassandra 테이블 카운트 세는 소스

* 아래소스보면 커넥터를 1.6과 1.5를 테스트하느라 둘다 쓴게 나오는데 1.6 , 1.5어느거 하나만 써도 상관없이 작동하니 신경쓰지말것.

import static com.datastax.spark.connector.japi.CassandraJavaUtil.javaFunctions;


import java.util.ArrayList;

import java.util.List;


import org.apache.spark.SparkConf;

import org.apache.spark.api.java.JavaRDD;

import org.apache.spark.api.java.JavaSparkContext;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;

import org.apache.hadoop.hbase.TableName;

import org.apache.hadoop.hbase.client.Result;

import org.apache.spark.api.java.JavaPairRDD;

import org.apache.spark.api.java.function.Function;

import org.apache.hadoop.hbase.io.ImmutableBytesWritable;

import org.apache.hadoop.hbase.mapreduce.TableInputFormat;


import com.datastax.spark.connector.japi.CassandraJavaUtil;

import com.datastax.spark.connector.japi.CassandraRow;




public class test3 {


        public static void main(String[] args)

        {


                SparkConf conf = new SparkConf(true)

                .set("spark.cassandra.connection.host","192.168.0.111")

                .setMaster("spark://192.168.0.111:7077")

                .setAppName("casr")

                .setJars(new String[]{"/apps/spark/lib/spark-cassandra-connector-java_2.10-1.6.0-M1.jar","/apps/spark/lib/spark-cassandra-connec

tor_2.10-1.6.0-M1.jar"})

                .setSparkHome("/apps/spark");



                JavaSparkContext sc = new JavaSparkContext(conf);


                sc.addJar("/home/hadoop/classes/cassandra-driver-core-3.0.0.jar");

                sc.addJar("/home/hadoop/classes/guava-19.0.jar");

                JavaRDD<CassandraRow> cassandraRdd = CassandraJavaUtil.javaFunctions(sc)

                        .cassandraTable("keytest", "test_table")

                        .select("name");


                                        System.out.println("row count:"+ cassandraRdd.count()); // once it is in RDD, we can use RDD 



               }

}


위의것을 컴파일후 실행하면 아래처럼 실행되더라.

[hadoop@os1 ~]$ java test3

Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties

SLF4J: Class path contains multiple SLF4J bindings.

SLF4J: Found binding in [jar:file:/home/hadoop/classes/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: Found binding in [jar:file:/home/hadoop/classes/logback-classic-1.1.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.

SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]

16/04/08 00:53:19 INFO SparkContext: Running Spark version 1.6.1

16/04/08 00:53:20 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

16/04/08 00:53:20 INFO SecurityManager: Changing view acls to: hadoop

16/04/08 00:53:20 INFO SecurityManager: Changing modify acls to: hadoop

16/04/08 00:53:20 INFO SecurityManager: SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(hadoop); users with modify permissions: Set(hadoop)

16/04/08 00:53:21 INFO Utils: Successfully started service 'sparkDriver' on port 54330.

16/04/08 00:53:22 INFO Slf4jLogger: Slf4jLogger started

16/04/08 00:53:22 INFO Remoting: Starting remoting

16/04/08 00:53:22 INFO Remoting: Remoting started; listening on addresses :[akka.tcp://sparkDriverActorSystem@192.168.0.111:34441]

16/04/08 00:53:22 INFO Utils: Successfully started service 'sparkDriverActorSystem' on port 34441.

16/04/08 00:53:22 INFO SparkEnv: Registering MapOutputTracker

16/04/08 00:53:22 INFO SparkEnv: Registering BlockManagerMaster

16/04/08 00:53:22 INFO DiskBlockManager: Created local directory at /tmp/blockmgr-e91fb4d5-8f1e-45b5-9631-2af967164aff

16/04/08 00:53:22 INFO MemoryStore: MemoryStore started with capacity 1077.8 MB

16/04/08 00:53:22 INFO SparkEnv: Registering OutputCommitCoordinator

16/04/08 00:53:23 INFO Utils: Successfully started service 'SparkUI' on port 4040.

16/04/08 00:53:23 INFO SparkUI: Started SparkUI at http://192.168.0.111:4040

16/04/08 00:53:23 INFO HttpFileServer: HTTP File server directory is /tmp/spark-d02efafe-ae00-4eaa-9cfc-0700e5848dd3/httpd-c8f30120-f92a-4ec9-922f-c201e94998af

16/04/08 00:53:23 INFO HttpServer: Starting HTTP Server

16/04/08 00:53:23 INFO Utils: Successfully started service 'HTTP file server' on port 48452.

16/04/08 00:53:23 INFO SparkContext: Added JAR /apps/spark/lib/spark-cassandra-connector-java_2.10-1.6.0-M1.jar at http://192.168.0.111:48452/jars/spark-cassandra-connector-java_2.10-1.6.0-M1.jar with timestamp 1460044403426

16/04/08 00:53:23 INFO SparkContext: Added JAR /apps/spark/lib/spark-cassandra-connector_2.10-1.6.0-M1.jar at http://192.168.0.111:48452/jars/spark-cassandra-connector_2.10-1.6.0-M1.jar with timestamp 1460044403435

16/04/08 00:53:23 INFO AppClient$ClientEndpoint: Connecting to master spark://192.168.0.111:7077...

16/04/08 00:53:23 INFO SparkDeploySchedulerBackend: Connected to Spark cluster with app ID app-20160408005323-0013

16/04/08 00:53:23 INFO AppClient$ClientEndpoint: Executor added: app-20160408005323-0013/0 on worker-20160407175148-192.168.0.111-57563 (192.168.0.111:57563) with 8 cores

16/04/08 00:53:23 INFO SparkDeploySchedulerBackend: Granted executor ID app-20160408005323-0013/0 on hostPort 192.168.0.111:57563 with 8 cores, 1024.0 MB RAM

16/04/08 00:53:23 INFO Utils: Successfully started service 'org.apache.spark.network.netty.NettyBlockTransferService' on port 44940.

16/04/08 00:53:23 INFO NettyBlockTransferService: Server created on 44940

16/04/08 00:53:23 INFO BlockManagerMaster: Trying to register BlockManager

16/04/08 00:53:23 INFO BlockManagerMasterEndpoint: Registering block manager 192.168.0.111:44940 with 1077.8 MB RAM, BlockManagerId(driver, 192.168.0.111, 44940)

16/04/08 00:53:23 INFO BlockManagerMaster: Registered BlockManager

16/04/08 00:53:23 INFO AppClient$ClientEndpoint: Executor updated: app-20160408005323-0013/0 is now RUNNING

16/04/08 00:53:24 INFO SparkDeploySchedulerBackend: SchedulerBackend is ready for scheduling beginning after reached minRegisteredResourcesRatio: 0.0

16/04/08 00:53:24 INFO SparkContext: Added JAR /home/hadoop/classes/cassandra-driver-core-3.0.0.jar at http://192.168.0.111:48452/jars/cassandra-driver-core-3.0.0.jar with timestamp 1460044404233

16/04/08 00:53:24 INFO SparkContext: Added JAR /home/hadoop/classes/guava-19.0.jar at http://192.168.0.111:48452/jars/guava-19.0.jar with timestamp 1460044404244

16/04/08 00:53:24 INFO NettyUtil: Found Netty's native epoll transport in the classpath, using it

16/04/08 00:53:25 INFO Cluster: New Cassandra host /192.168.0.111:9042 added

16/04/08 00:53:25 INFO Cluster: New Cassandra host /192.168.0.112:9042 added

16/04/08 00:53:25 INFO LocalNodeFirstLoadBalancingPolicy: Added host 192.168.0.112 (datacenter1)

16/04/08 00:53:25 INFO Cluster: New Cassandra host /192.168.0.113:9042 added

16/04/08 00:53:25 INFO LocalNodeFirstLoadBalancingPolicy: Added host 192.168.0.113 (datacenter1)

16/04/08 00:53:25 INFO Cluster: New Cassandra host /192.168.0.114:9042 added

16/04/08 00:53:25 INFO LocalNodeFirstLoadBalancingPolicy: Added host 192.168.0.114 (datacenter1)

16/04/08 00:53:25 INFO Cluster: New Cassandra host /192.168.0.115:9042 added

16/04/08 00:53:25 INFO LocalNodeFirstLoadBalancingPolicy: Added host 192.168.0.115 (datacenter1)

16/04/08 00:53:25 INFO Cluster: New Cassandra host /192.168.0.116:9042 added

16/04/08 00:53:25 INFO LocalNodeFirstLoadBalancingPolicy: Added host 192.168.0.116 (datacenter1)

16/04/08 00:53:25 INFO CassandraConnector: Connected to Cassandra cluster: CASDR

16/04/08 00:53:26 INFO SparkContext: Starting job: count at test3.java:44

16/04/08 00:53:26 INFO DAGScheduler: Got job 0 (count at test3.java:44) with 7 output partitions

16/04/08 00:53:26 INFO DAGScheduler: Final stage: ResultStage 0 (count at test3.java:44)

16/04/08 00:53:26 INFO DAGScheduler: Parents of final stage: List()

16/04/08 00:53:26 INFO DAGScheduler: Missing parents: List()

16/04/08 00:53:26 INFO DAGScheduler: Submitting ResultStage 0 (CassandraTableScanRDD[1] at RDD at CassandraRDD.scala:15), which has no missing parents

16/04/08 00:53:26 INFO MemoryStore: Block broadcast_0 stored as values in memory (estimated size 7.3 KB, free 7.3 KB)

16/04/08 00:53:26 INFO MemoryStore: Block broadcast_0_piece0 stored as bytes in memory (estimated size 3.8 KB, free 11.1 KB)

16/04/08 00:53:26 INFO BlockManagerInfo: Added broadcast_0_piece0 in memory on 192.168.0.111:44940 (size: 3.8 KB, free: 1077.7 MB)

16/04/08 00:53:26 INFO SparkContext: Created broadcast 0 from broadcast at DAGScheduler.scala:1006

16/04/08 00:53:26 INFO DAGScheduler: Submitting 7 missing tasks from ResultStage 0 (CassandraTableScanRDD[1] at RDD at CassandraRDD.scala:15)

16/04/08 00:53:26 INFO TaskSchedulerImpl: Adding task set 0.0 with 7 tasks

16/04/08 00:53:27 INFO SparkDeploySchedulerBackend: Registered executor NettyRpcEndpointRef(null) (os1.local:56503) with ID 0

16/04/08 00:53:27 INFO BlockManagerMasterEndpoint: Registering block manager os1.local:53103 with 511.1 MB RAM, BlockManagerId(0, os1.local, 53103)

16/04/08 00:53:27 INFO TaskSetManager: Starting task 0.0 in stage 0.0 (TID 0, os1.local, partition 0,NODE_LOCAL, 26312 bytes)

16/04/08 00:53:27 INFO TaskSetManager: Starting task 1.0 in stage 0.0 (TID 1, os1.local, partition 1,NODE_LOCAL, 26222 bytes)

16/04/08 00:53:27 INFO TaskSetManager: Starting task 5.0 in stage 0.0 (TID 2, os1.local, partition 5,NODE_LOCAL, 26352 bytes)

16/04/08 00:53:28 INFO BlockManagerInfo: Added broadcast_0_piece0 in memory on os1.local:53103 (size: 3.8 KB, free: 511.1 MB)

16/04/08 00:53:31 INFO TaskSetManager: Starting task 2.0 in stage 0.0 (TID 3, os1.local, partition 2,ANY, 26312 bytes)

16/04/08 00:53:31 INFO TaskSetManager: Starting task 3.0 in stage 0.0 (TID 4, os1.local, partition 3,ANY, 21141 bytes)

16/04/08 00:53:31 INFO TaskSetManager: Starting task 4.0 in stage 0.0 (TID 5, os1.local, partition 4,ANY, 23882 bytes)

16/04/08 00:53:31 INFO TaskSetManager: Starting task 6.0 in stage 0.0 (TID 6, os1.local, partition 6,ANY, 10818 bytes)

16/04/08 00:53:32 INFO TaskSetManager: Finished task 6.0 in stage 0.0 (TID 6) in 1106 ms on os1.local (1/7)

16/04/08 00:53:33 INFO TaskSetManager: Finished task 1.0 in stage 0.0 (TID 1) in 5530 ms on os1.local (2/7)

16/04/08 00:53:33 INFO TaskSetManager: Finished task 3.0 in stage 0.0 (TID 4) in 1945 ms on os1.local (3/7)

16/04/08 00:53:33 INFO TaskSetManager: Finished task 0.0 in stage 0.0 (TID 0) in 6015 ms on os1.local (4/7)

16/04/08 00:53:33 INFO TaskSetManager: Finished task 5.0 in stage 0.0 (TID 2) in 5959 ms on os1.local (5/7)

16/04/08 00:53:33 INFO TaskSetManager: Finished task 4.0 in stage 0.0 (TID 5) in 2150 ms on os1.local (6/7)

16/04/08 00:53:33 INFO TaskSetManager: Finished task 2.0 in stage 0.0 (TID 3) in 2286 ms on os1.local (7/7)

16/04/08 00:53:33 INFO DAGScheduler: ResultStage 0 (count at test3.java:44) finished in 7.049 s

16/04/08 00:53:33 INFO TaskSchedulerImpl: Removed TaskSet 0.0, whose tasks have all completed, from pool 

16/04/08 00:53:33 INFO DAGScheduler: Job 0 finished: count at test3.java:44, took 7.435243 s

16/04/08 00:53:34 INFO CassandraConnector: Disconnected from Cassandra cluster: CASDR

16/04/08 00:53:35 INFO BlockManagerInfo: Removed broadcast_0_piece0 on 192.168.0.111:44940 in memory (size: 3.8 KB, free: 1077.8 MB)

row count:3 <--------- 요기 요거가 나온답 ㅋ

16/04/08 00:53:35 INFO BlockManagerInfo: Removed broadcast_0_piece0 on os1.local:53103 in memory (size: 3.8 KB, free: 511.1 MB)

16/04/08 00:53:35 INFO SparkContext: Invoking stop() from shutdown hook

16/04/08 00:53:35 INFO ContextCleaner: Cleaned accumulator 1

16/04/08 00:53:35 INFO SparkUI: Stopped Spark web UI at http://192.168.0.111:4040

16/04/08 00:53:35 INFO SparkDeploySchedulerBackend: Shutting down all executors

16/04/08 00:53:35 INFO SparkDeploySchedulerBackend: Asking each executor to shut down

16/04/08 00:53:35 INFO MapOutputTrackerMasterEndpoint: MapOutputTrackerMasterEndpoint stopped!

16/04/08 00:53:35 INFO MemoryStore: MemoryStore cleared

16/04/08 00:53:35 INFO BlockManager: BlockManager stopped

16/04/08 00:53:35 INFO BlockManagerMaster: BlockManagerMaster stopped

16/04/08 00:53:35 INFO OutputCommitCoordinator$OutputCommitCoordinatorEndpoint: OutputCommitCoordinator stopped!

16/04/08 00:53:35 INFO SparkContext: Successfully stopped SparkContext

16/04/08 00:53:35 INFO ShutdownHookManager: Shutdown hook called

16/04/08 00:53:35 INFO ShutdownHookManager: Deleting directory /tmp/spark-d02efafe-ae00-4eaa-9cfc-0700e5848dd3/httpd-c8f30120-f92a-4ec9-922f-c201e94998af

16/04/08 00:53:35 INFO RemoteActorRefProvider$RemotingTerminator: Shutting down remote daemon.

16/04/08 00:53:35 INFO ShutdownHookManager: Deleting directory /tmp/spark-d02efafe-ae00-4eaa-9cfc-0700e5848dd3

16/04/08 00:53:35 INFO RemoteActorRefProvider$RemotingTerminator: Remote daemon shut down; proceeding with flushing remote transports.

[hadoop@os1 ~]$


주의사항

위에 저 빨간 글씨인 row count 나오게 하려고 별짓을 다했다. ㅋ

이 클래스안에서 실행되는 spark와 cassandra는 새로 이 두놈에 접속을 하여 자바에서 설정된 환경설정을 따라서 

실행되는것으로 보인다.

java 소스상에 보면 setJars 를 통해서 jar파일위치를 추가해주었다.

그랬더니 길고긴 닭질을 끝내고 성공하게 됨;;;; 

그렇게 서버를 만져도 자꾸 망각하게되는 부분. ㅎㅎ;;;


저작자 표시
신고
Posted by ORACLE,DBA,BIG,DATA,JAVA 흑풍전설

댓글을 달아 주세요

어찌되었든 DB만은 할수없는 일이다.
좋은(비싸기만 한것말고 적재적소의 데이터베이스) DB에 잘 설계된 데이터구조를 올려놓고 나면
잘만들어진 프로그램이 좋은 인터페이스 역할을 해야 좋은데이터가 만들어지는것이지.

DB혼자 잘나바야 데이터 넣기도 어렵고
개발혼자 잘나바야 데이터 꺼내서 활용하기도 어렵다.

개발과 DB는 어찌되었든 같이 조화가 되어야지 불화(?) 가 되어서는 안되는것 같다.

아무튼.
데이터 insert , select 를 위해서 hive를 이용해서 데이터 조작을 위한 테스트를 진행하려고 한다.

준비사항 :
1. hive-0.8.1-bin.tar.gz 안의 라이브러리들.
2. 개발툴 ( 나는 eclipse )
3. WAS 아무거나 ( 나는 tomcat - was라고 치자..... )

 

1. 설정 (관련 라이브러리 추가)


아래3가지 ( libfb , slf4j 2가지를 처음에 빼고 나머지만 라이브러리에 추가 했더니 에러도 잘 안나오고
실행은 안되고 알수가 없었다. 꼭 추가하길
)

이클립스에 추가되어야할 라이브러리들.

hive-jdbc-버전.jar

hive-exec-버전.jar

hive-metastore-버전.jar

hive-service-버전.jar

hadoop-core-버전.jar

commons-logging-버전.jar

log4j-버전.jar

libfb버전.jar

slf4j-api-버전.jar

slf4j-log4j12-버전.jar

2. hive server 실행

Hive를 mysql에 연결한 작업까지 하고나서 이제 Hive 서비스를 띄운다. 
(물론 HIVE_HOME 설정은 되어있는 상태이며 bin디렉토리까지 path로 잡아놓은 상태 이고 mysql 로 띄운상태이다.) 

[hadoop@master1 ~]$hive --service hiveserver &
WARNING: org.apache.hadoop.metrics.jvm.EventCounter is deprecated. Please use org.apache.hadoop.log.metrics.EventCounter in all the log4j.properties files.
Hive history file=/home/hadoop/hive/log/tansactionhist/hive_job_log_hadoop_201208041919_1622721562.txt

아래는 그냥 로그파일에 찍히는 내용을 보고자띄움.

[hadoop@master1 ~]$tail -f  /home/hadoop/hive/log/tansactionhist/hive_job_log_hadoop_201208041919_1622721562.txt

 

2. 테스트 (테스트는 https://cwiki.apache.org/Hive/hiveclient.html 에 있는 내용을 테스트함 )

테스트를 위해서 참고한 apache.org에 소스가 있으니 그대로 가져와도 된다.

아래는 해당 사이트에 있는 소스임 여기서 내서버와 관련된 설정만 바꾸도록 한다. 

 

import java.sql.SQLException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.DriverManager;

public class HiveJdbcClient {
  private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";

  /**
* @param args
* @throws SQLException
   */
  public static void main(String[] args) throws SQLException {
      try {
      Class.forName(driverName);
    } catch (ClassNotFoundException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      System.exit(1);
    }
    Connection con = DriverManager.getConnection("jdbc:hive://192.168.0.141:10000/default", "", "");
    Statement stmt = con.createStatement();
    String tableName = "testHiveDriverTable";
    stmt.executeQuery("drop table " + tableName);
    ResultSet res = stmt.executeQuery("create table " + tableName + " (key int, value string)");
    // show tables
    String sql = "show tables '" + tableName + "'";
    System.out.println("Running: " + sql);
    res = stmt.executeQuery(sql);
    if (res.next()) {
      System.out.println(res.getString(1));
    }
    // describe table
    sql = "describe " + tableName;
    System.out.println("Running: " + sql);
    res = stmt.executeQuery(sql);
    while (res.next()) {
      System.out.println(res.getString(1) + "\t" + res.getString(2));
    }

    // load data into table
    // NOTE: filepath has to be local to the hive server
    // NOTE: /tmp/a.txt is a ctrl-A separated file with two fields per line
    String filepath = "/home/hadoop/test.txt"; // <---- 이걸 참고할것 아래에 내용 이어서.
    sql = "load data local inpath '" + filepath + "' into table " + tableName;
    System.out.println("Running: " + sql);
    res = stmt.executeQuery(sql);

    // select * query
    sql = "select * from " + tableName;
    System.out.println("Running: " + sql);
    res = stmt.executeQuery(sql);
    while (res.next()) {
      System.out.println(String.valueOf(res.getInt(1)) + "\t" + res.getString(2));
    }
}

}

위의 파일경로와 파일명이 써있는부분의 파일생성은 hive 서버를 작동시킨 곳에다가 파일을 넣는다.
본인이 tomcat를 로컬에다가 띄웠다고 로컬에 넣는것이 아닌 hive서버 경로이다.
또한 그냥 단순히 apache.org에 있는 내용을 vi 로 작성했더니 인식을 못하더라 ;;;;; 예제 있는 쉘그대로 실행할것.

 

 

[hadoop@master1 ~]$echo -e '1\x01foo' > /home/hadoop/test.txt
[hadoop@master1 ~]$echo -e '2\x01bar' >> /home/hadoop/test.txt

아무튼 위처럼 파일을 생성하고나서 실행를 해보면 .

 

3. 결과

* 아래는 로그파일에 찍힌 내용 

Hive history file=/home/hadoop/hive/log/tansactionhist/hive_job_log_hadoop_201208041919_859275775.txt
OK
OK
OK
OK
Copying data from file:/home/hadoop/test.txt
Copying file: file:/home/hadoop/test.txt
Loading data to table default.testhivedrivertable
OK
OK

 

 

* 아래는 console 에 찍힌 내용

Running: show tables 'testHiveDriverTable'
testhivedrivertable
Running: describe testHiveDriverTable
key int
value string
Running: load data local inpath '/home/hadoop/test.txt' into table testHiveDriverTable
Running: select * from testHiveDriverTable
1 foo
2 bar 

 

 

* hive로 들어가서 select 를 해본내용

[hadoop@master1 ~]$ hive
WARNING: org.apache.hadoop.metrics.jvm.EventCounter is deprecated. Please use org.apache.hadoop.log.metrics.EventCounter in all the log4j.properties files.
Logging initialized using configuration in file:/usr/local/hive/conf/hive-log4j.properties
Hive history file=/home/hadoop/hive/log/tansactionhist/hive_job_log_hadoop_201208042146_1805362014.txt
hive> select *From testHiveDriverTable;
OK
1       foo
2       bar
Time taken: 3.097 seconds
hive>

 

 

* Hadoop 관리자 모습 (test파일이 추가된모습 )

 

신고

'OpenSource(Bigdata&distribution&Network) > BigData' 카테고리의 다른 글

log파일 flume으로 hdfs에 저장하기  (2) 2015.10.02
Hadoop Hbase 이용한 데이터 적재및 결과 DB전송  (0) 2015.09.17
Hive java connection 설정  (0) 2012.08.04
Hive로 결정.  (0) 2012.07.31
Hbase 설치.  (0) 2012.07.29
hadoop 설치  (2) 2012.06.18
Posted by ORACLE,DBA,BIG,DATA,JAVA 흑풍전설

댓글을 달아 주세요

HADOOP 설치.

1대의 서버급 PC에 HADOOP 을 우선 여기저기 널려있는 문서를 찾아서 설치부터 하기로 했다.
RDB와의 유연한 연동 테스트를 위해서 스트레스 테스트를 위해서 설치부터 진행한다.

1. vmware OS 준비
CPU : 2
RAM : 2GB
HDD : 20GB
로 세팅하여 3대를 준비한다.

2. 기본 설치준비 사항. (2012.06.18일 기준 최신버전을 다 받았다)
OS 는 리눅스 (Cent OS 5.7로 선택)
apache-hadoop : 1.03
jdk : 1.7.0_05 ( 64bit )

 


3. 설치전 ( 이렇게 생겨먹은 형태로 설치하려고 한다. )

오라클 RAC를 설치할때와 마찬가지로 SSH 로 각 3대를 인증없이 로그인되도록 만들고나서
1:N 구조 형태로 연결을 한다.


IP : 192.168.0.141 ( master )
IP : 192.168.0.142 ( slave1 )
IP : 192.168.0.143 ( slave2 )
master나 slave이름은 호스트이름으로 정하기로 한다. ( 남들도 그렇게 하드라고... )

설치 파일도 그렇고 메모리도 그렇고 기본설치할때는 생각보다 메모리를 적게 먹는다.
오라클처럼 GUI가 제공되는것은 아니지만 오픈소스만의 좀 있어보이는 설치방식(?) 도 마음에 든다 

 

4. 기본 공통 설치 ( 각 OS 이미지에 공통으로 적용될것을 먼저 진행하여 복사를 한다.

ㄱ. JDK 1.7 풀어서 원하는곳에 넣기. ( /usr/local/java/j2se ) 
ㄴ. hadoop 소스파일 풀어서 원하는곳에 넣기. ( /usr/local/hadoop )
ㄷ. 환경설정파일 수정.

- hosts 파일 수정

[hadoop@master conf]$ cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1                 localhost.localdomain localhost
192.168.0.141           master
192.168.0.142           slave1
192.168.0.143           slave2

    - profile 또는 해당 사용자의 profile ( 나는 그냥 전체 적용시켜버리겠다 )
    /etc/profile 에 아래 내용 추가

    HADOOP_HOME=/usr/local/hadoop
    JAVA_HOME=/usr/local/java/j2se
    CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib/ext
    PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin
    export HADOOP_HOME_WARN_SUPPRESS=" " # 파티션 포멧할때 에러가 나서 사이트 검색해서 추가함.
    export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC JAVA_HOME CLASSPATH HADOOP_HOME

 

 

ㄹ. 디렉토리 생성
   
 -  네임노드용 디렉토리와, 작업용, 데이터용 디렉토리를 생성한다. ( 원래는 네임노드는 name만 데이터노드는 data만 있으면 되는데 귀찮아서;;; 한군데 다 만들고 그냥 vm-image clone 함.

     $>mkdir -p /home/hadoop/work/mapred/system
    $>mkdir -p /home/hadoop/work/data
    $>mkdir -p /home/hadoop/work/name
    $>chmod 755 /home/hadoop/work/data 
    #위의 chmod 를 한것은? 
    
네임노드가 올라오지 않고 에러가 자꾸 나서 찾아보고나서 권한수정
    위 작업이 없이 그냥 하둡을 실행하면.

    아래와 같은log4j에러가 찍힌다. 혹시 보게되면 이것을 꼭 해주길;;;
     WARN org.apache.hadoop.hdfs.DFSClient: Error Recovery for block null bad datanode[0] nodes == null
     WARN org.apache.hadoop.hdfs.DFSClient: Could not get block locations. Source file "/home/hadoop/work/mapred/system/jobtracker.info" - Aborting...
     WARN org.apache.hadoop.mapred.JobTracker: Writing to file hdfs://192.168.0.141:9000/home/hadoop/work/mapred/system/jobtracker.info failed!
     WARN org.apache.hadoop.mapred.JobTracker: FileSystem is not ready yet!
     WARN org.apache.hadoop.mapred.JobTracker: Failed to initialize recovery manager.
org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /home/hadoop/work/mapred/system/jobtracker.info could only be replicated to 0 nodes, instead of 1
        at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1558)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:696)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)
        at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:563)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1388)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1384)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:415)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121)
        at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1382)

        at org.apache.hadoop.ipc.Client.call(Client.java:1070)
        at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:225)
        at $Proxy5.addBlock(Unknown Source)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)
        at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:82)
        at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:59)
        at $Proxy5.addBlock(Unknown Source)
        at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.locateFollowingBlock(DFSClient.java:3510)
        at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.nextBlockOutputStream(DFSClient.java:3373)
        at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.access$2600(DFSClient.java:2589)
        at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$DataStreamer.run(DFSClient.java:2829)

 

5. 각 os image 부팅후 각 서버별로 설정 (참고 : 지금 설치하는 사용자는 hadoop이라는 사용자로 설치한다. )

ㄱ. ssh 설정 
     각서버를 패스워드 없이 드나들고 , hadoop 이 각 노드와의 처리를 위해서 노인증처리 작업을 한다.

     - 아래 작업은 3대중에 1곳만 한다. (어차피 복사할거라..) 
     - hadoop 계정으로 로그인후 ( 로그인 되어있으면 말고.. )
     $> cd [Enter] ( 홈디렉토리 이동 )
    $> ssh-keygen -t rsa [Enter]
     $> [Enter][Enter][Enter][Enter][Enter][Enter] ....
     * 이렇게 하고나서 다시 프롬프트가 나오면 확인차
     $> ls -al [Enter]
     * .ssh 라는 이름의 숨겨진 디렉토리가 보일것이다.
     $> cd .ssh [Enter]
    $> cp id_rsa.pub authorized_keys [Enter]

     * 이제 다른 서버로 접속 ( master에서 설치했다면 slave1 이나 slave2 로 접속한다.) 
     $> ssh slave1 
     [어쩌고 저쩌고] yes/no ? 물을것이다.  
     한번도 들어와 본적이 없는곳이라면 물어보겠지 일종의 암호를 저장하시겠습니까? 와 비슷한... (암호를 저장하는것은 아니다!)
     - yes 하면 패스워드를 물을것이 들어가본다.
     - 잘 들어가지면 다시 나온다.
     $>exit [Enter]
     해당 .ssh 디렉토리내부를 다른서버에 복사

     * 위의 작업을 한곳을 제외한 나머지곳에는 ssh-keygen -t rsa 명령어 치고 엔터나치면서 .ssh 디렉토리를 생성하고나서.

     $>scp * hadoop@slave1:.ssh [Enter]
     * 그러면 패스워드 한번 묻고 복사가 될것이다.

     * 그렇게 하고나서 다시 ssh master 나 ssh 아이피등 어찌되었든 3개의 서버를 와따갔다해보면 
     yes/no ? 최초에 한번묻고 패스워드는 안물어 볼 것이다.( 이래야 정상인데;;; )

 

  ㄴ. Hadoop 관련 설정 ( 내 하둡 위치 : /usr/local/hadoop )

      - conf 디렉토리 안에 설정파일 몇가지를 수정한다.
      - hadoop-env.sh 
        #JAVA_HOME 수정후 주석풀기.
        #HADOOP_HEAPSIZE 주석풀기. 
        #HADOOP_SSH_OPTS 주석풀기. [data노드가 연결이 안되어서 이것저것 찾아보다가 이부분도 풀었다;;]


- core-site.xml
 <configuration>
 <property>
        <name>fs.default.name</name>
        <value>hdfs://192.168.0.141:9000</value>
 </property>
 </configuration>

 

- hdfs-site.xml
  <configuration>
        <property>
                <name>dfs.replication</name>
                <value>2</value>
        </property>
        <property>
                <name>dfs.name.dir</name>
                <value>/home/hadoop/work/name</value>
        </property>
        <property>
                <name>dfs.data.dir</name>
                <value>/home/hadoop/work/data</value>
        </property>
        <property>
                <name>dfs.support.append</name>
                <value>true</value>
        </property>
</configuration>

 

mapred-site.xml
  <configuration>
    <property>
        <name>mapred.map.child.java.opts</name>
        <value>-Xmx200m </value>
    </property>
    <property>
        <name>mapred.reduce.child.java.opts</name>
        <value>-Xmx200m </value>
    </property>
    <property>
        <name>mapred.job.tracker</name>
        <value>hdfs://192.168.0.141:9001</value>
    </property>
    <property>
        <name>mapred.system.dir</name>
        <value>/home/hadoop/work/mapred/system</value>
    </property>
</configuration>


 

- slaves
  192.168.0.142
  192.168.0.143

위 설정파일(4가지)도 각 서버에 전부 적용해도 된다. 여기다가 쓴이유는..... 아무생각없이 작성하다가;;; 여기다가 썼다; 

 

6. hadoop 띄우기[완료]

ㄱ. 시작전 포멧
     위에서 path를 hadoop밑의bin디렉토디도 추가했다면
     $> hadoop namenode -format [Enter]

     사실 위의 명령어를 한번 딱치면 format 이 실패했다고 떠버렸다. 처음이라 그런가 하여 다시 시도하면 바로 성공;;; 

12/06/19 12:29:40 INFO namenode.NameNode: STARTUP_MSG: 
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = master/192.168.0.141
STARTUP_MSG:   args = [-format]
STARTUP_MSG:   version = 1.0.3
STARTUP_MSG:   build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.0 -r 1335192; compiled by 'hortonfo' on Tue May  8 20:31:25 UTC 2012
************************************************************/
Re-format filesystem in /home/hadoop/work/name ? (Y or N) Y # 다시 시도한 흔적 ㅎㅎ;
12/06/19 12:29:42 INFO util.GSet: VM type       = 64-bit
12/06/19 12:29:42 INFO util.GSet: 2% max memory = 17.77875 MB
12/06/19 12:29:42 INFO util.GSet: capacity      = 2^21 = 2097152 entries
12/06/19 12:29:42 INFO util.GSet: recommended=2097152, actual=2097152
12/06/19 12:29:43 INFO namenode.FSNamesystem: fsOwner=hadoop
12/06/19 12:29:43 INFO namenode.FSNamesystem: supergroup=supergroup
12/06/19 12:29:43 INFO namenode.FSNamesystem: isPermissionEnabled=true
12/06/19 12:29:43 INFO namenode.FSNamesystem: dfs.block.invalidate.limit=100
12/06/19 12:29:43 INFO namenode.FSNamesystem: isAccessTokenEnabled=false accessKeyUpdateInterval=0 min(s), accessTokenLifetime=0 min(s)
12/06/19 12:29:43 INFO namenode.NameNode: Caching file names occuring more than 10 times
12/06/19 12:29:43 INFO common.Storage: Image file of size 112 saved in 0 seconds.
12/06/19 12:29:43 INFO common.Storage: Storage directory /home/hadoop/work/name has been successfully formatted.
12/06/19 12:29:43 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at master/192.168.0.141
************************************************************/

 

 

ㄴ.  시작[완료]

$>start-all.sh [Enter]
starting namenode, logging to /usr/local/hadoop/libexec/../logs/hadoop-hadoop-namenode-master.out
192.168.0.142: starting datanode, logging to /usr/local/hadoop/libexec/../logs/hadoop-hadoop-datanode-slave1.out
192.168.0.143: starting datanode, logging to /usr/local/hadoop/libexec/../logs/hadoop-hadoop-datanode-slave2.out
192.168.0.141: starting secondarynamenode, logging to /usr/local/hadoop/libexec/../logs/hadoop-hadoop-secondarynamenode-master.out
starting jobtracker, logging to /usr/local/hadoop/libexec/../logs/hadoop-hadoop-jobtracker-master.out
192.168.0.142: starting tasktracker, logging to /usr/local/hadoop/libexec/../logs/hadoop-hadoop-tasktracker-slave1.out
192.168.0.143: starting tasktracker, logging to /usr/local/hadoop/libexec/../logs/hadoop-hadoop-tasktracker-slave2.out

위 메세지 마냥 각 연결된 노드를 전부 띄워주는것 같다 [선지식이 없는 상태에서 하다보니 추측만 할뿐]

* 실제로 start-all.sh 파일을 열어보면 두개의 실행을 해주는것을 확인했다. [아래는 start-all.sh 파일]
     
bin=`dirname "$0"`
bin=`cd "$bin"; pwd`

if [ -e "$bin/../libexec/hadoop-config.sh" ]; then
  . "$bin"/../libexec/hadoop-config.sh
else
  . "$bin/hadoop-config.sh"
fi

# start dfs daemons
"$bin"/start-dfs.sh --config $HADOOP_CONF_DIR

# start mapred daemons
"$bin"/start-mapred.sh --config $HADOOP_CONF_DIR

      하나는 분산파일시스템 시작인것 같고. 하나는 맵리듀스인지 나발인지 올리는것 같다;;;;

 

 

ㄷ. 확인

     이것도 관리자같은것이 있다[Oracle이나 MSSQL 같은 EM 은 아니고 그냥 상태 파악용??? 현황판?]

 http://192.168.0.141:50070

 

 

 

http://192.168.0.141:50030 

- 두개의 노드가 live하다라든가 [ 두개 노드 datanode만 말하는것 같다. ]
- 용량이 어쩌구 저쩌구 되어있고. [ heap 인걸보니 아마도 파일을 메모리에 올려놓고 사용하는 양을 예기하는것 같은데... ]

 

* 이제부터 책과 함께 이것저것 하면서 파봐야한다.

* 자바로 띄우는걸 보니 자바로 접근하는것이 상당히 유연할듯한데. 개인적으로 자바를 별로 안좋아라 해서 약간 걱정이다.

* 프로젝트있을때만 한 자바.... 개놈에 자바.... 아무튼 오라클과 hadoop 테스트 때문에 불가피하게 또 해야겠다.... (-.ㅜ)

 

신고

'OpenSource(Bigdata&distribution&Network) > BigData' 카테고리의 다른 글

log파일 flume으로 hdfs에 저장하기  (2) 2015.10.02
Hadoop Hbase 이용한 데이터 적재및 결과 DB전송  (0) 2015.09.17
Hive java connection 설정  (0) 2012.08.04
Hive로 결정.  (0) 2012.07.31
Hbase 설치.  (0) 2012.07.29
hadoop 설치  (2) 2012.06.18
Posted by ORACLE,DBA,BIG,DATA,JAVA 흑풍전설

댓글을 달아 주세요

  1. ycstoyou

    글잘 보고 갑니다 예전에 1버전이 안나왔을때 간단하게 트위터 분석프로그램을 hadoop을 이용해서 한경험이 있는데

    넷빈을 이용해서 해보았습니다.
    이클립스는 설정이 힘들어서...윈도우 환경에서 코딩하고 ftp로 올리니 간단하게 되더군요 .
    최신버전보니 좋은거같습니다 잘보고갑니다^^

    2012.07.10 09:47 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 감사합니다.

      이클립스에서 설정해서 하려는데 짜증이 몰려옵니다.
      지금 ㅎㅎ;;;;
      넷빈은 잘 안써봐서 모르겠습니다.
      ruby개발하긴 좋다고 듫었습니다만 ㅎㅎ;;

      2012.07.29 17:59 신고 [ ADDR : EDIT/ DEL ]


티스토리 툴바