Ubuntu Setup YCSB & MapKeeper to benchmark LevelDB

本文提供了一套详细的安装配置流程,涵盖Java、Maven等基础环境搭建,以及Libevent、Boost、Thrift等高级组件的安装步骤。同时介绍了如何下载并设置YCSB进行性能测试,并详细记录了Mapkeeper和LevelDB的安装及绑定过程。

First install Java and maven:

1. Java:

sudo apt-get install default-jre
sudo apt-get install default-jdk
  • sudo add-apt-repository ppa:webupd8team/java
  • sudo apt-get update
sudo apt-get install oracle-java7-installer
JAVA_HOME="/usr/lib/jvm/java-8-oracle"
alternative:
sudo add-apt-repository ppa:openjdk-r/ppa  
sudo apt-get update   
sudo apt-get install openjdk-7-jdk  
sudo update-java-alternatives -s java-1.7.0-openjdk-amd64 JAVA_HOME="/usr/lib/jvm/java-1.7.0-openjdk-amd64"or:sudo vim /etc/profileadd:JAVA_HOME="/usr/lib/jvm/java-1.7.0-openjdk-amd64"


2. Maven:

wget http://www-eu.apache.org/dist/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz

sudo tar xzf apache-maven-3.3.9-bin.tar.gz

sudo cp -r apache-maven-3.3.9 /usr/local


Set environment:

sudo vi /etc/profile — to setup environment variable and sudo gedit ~/.bashrc

  1. export M3_HOME=/usr/local/apache-maven-3.3.9/
  2. export PATH=${M3_HOME}/bin:${PATH}
restart your computer, use mvn -vertion


3. Libevent

 

wget http://monkey.org/~provos/libevent-2.0.12-stable.tar.gz
tar xfvz libevent-2.0.12-stable.tar.gz
cd libevent-2.0.12-stable
./configure --prefix=/usr/local
make && sudo make install

4. Boost

   sudo apt-get install libboost-all-dev

   when you need to do choice, choose n

  sudo ln -sf /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.54.0 /usr/lib/libboost_thread.so

sudo ln -sf /usr/lib/x86_64-linux-gnu/libboost_system.so.1.54.0 /usr/lib/libboost_system.so


5.  Thrift

 

wget http://archive.apache.org/dist/thrift/0.8.0/thrift-0.8.0.tar.gz
tar xfvz thrift-0.8.0.tar.gz
cd thrift-0.8.0
./configure --prefix=/usr/local

 if encounter  configure: error: "Error: libcrypto required." 

solve it using:

sudo apt-get install libssl1.0.0/trusty libssl-dev/trusty openssl/trusty

Make sure that

  1. Building C++ Library ......... : yes
    Building TNonblockingServer .. : yes
make && sudo make install


6. Download YCSB

  https://github.com/downloads/brianfrankcooper/YCSB/ycsb-0.1.4.tar.gz 

  tar zxvf ycsb-0.1.4.tar.gz

7. Mapkeeper install

  git clone git://github.com/m1ch1/mapkeeper.git or git clone https://github.com/sears/mapkeeper.git
  export MKROOT='pwd'/mapkeeper
  cd $MKROOT/thrift

  make

  there will be unint32 error

  solve:

   sudo gedit /usr/local/thrift/Thrift.h

   add: #include <stdint.h>

 then make again.

8. LevelDB install

  git clone https://github.com/google/leveldb.git

  cd leveldb

  make

  sudo cp -r include/leveldb/ /usr/local/include/

  sudo cp out-static/libleveldb.a /usr/local/lib/


9. bind leveldb with mapkeeper

 enter mapkeeper directory, enter leveldb directory

 make

 there are some errors:

 edit the Makefile document as follows:

 include ../Makefile.config

EXECUTABLE = mapkeeper_leveldb

all :
    g++ -Wall -o $(EXECUTABLE) *cpp -I $(THRIFT_DIR)/include/thrift -I $(THRIFT_DIR)/include \
        -lboost_thread -lboost_system -lpthread -lboost_filesystem -lboost_program_options -lthrift -lleveldb -I ../thrift/gen-cpp \
    -L $(THRIFT_DIR)/lib \
        -L ../thrift/gen-cpp -lmapkeeper \
           -Wl,-rpath,\$$ORIGIN/../thrift/gen-cpp            \
           -Wl,-rpath,$(THRIFT_DIR)/lib

run:
    ./$(EXECUTABLE) --sync

clean :
    - rm -rf $(THRIFT_SRC) $(EXECUTABLE) *.o

wipe:
    - rm -rf data/*



Run the test:

1. cd mapkeeper/leveldb

 run "./mapkeeper_leveldb -d ~/mapkeeper/level/data", which means leveldb server is running!

2. cd ycsb/

 run

  ./bin/ycsb load mapkeeper -P workloads/workloada

 which means client is running the test!




Errors: error: there are no arguments to ‘htons’ that depend on a template parameter, so a declaration of ‘htons’ must be available [-fpermissive]

Solution: reference :https://stackoverflow.com/questions/8402479/error-while-compiling-thrift-server

   add #include <arpa/inet.h> in the cpp file


Error: LevelDbServer error: conversion from ‘boost::filesystem::path’ to non-scalar type ‘std::string {aka std::basic_string<char>}’ requested


Solution: change the file LevelDbServer.cpp

change line 57 to "std::string mapName = boost::filesystem::path(itr->path().filename()).string();"







评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值