8000 RC version 0.9.8.15 depend on 0.9.8.14-rc by kashirin-alex · Pull Request #89 · hypertable/hypertable · GitHub
[go: up one dir, main page]

Skip to content

Conversation

@kashirin-alex
Copy link

supporting information on the release candidate version 0.9.8.15
https://github.com/kashirin-alex/hypertable/tree/0.9.8.15-rc/built_logs/0.9.8.15

Major subjectives,
- Dynamic Configurations Reload(reconfiguration) at run time
- Support for updated dependencies releases

Version 0.9.8.15:
(2018-12-19)

  Updated for libssh 0.8.5 (changes to deprecated and use of read_nonblocking)
  added support of ZSTD(zstandard) compressor for BlockCompressionCodec
  added macro USE_READDIR_R, false with glibc-2.23+
  changed readdir_r deprecated infavour of readdir depends on USE_READDIR_R(GLIBC version)
  changed ClientKeepaliveHandler, select next hyperspace replica client by index count 
  changed Hyperspace ClientKeepaliveHandler, Config/Properties assigned via Session
  added method get_next_replica to Hyperspace Session 
  added stricness to Berkeley DB events REP_DUPMASTER and DB_EVENT_REP_LOCAL_SITE_REMOVED, exit with HT_FATAL
  added dbenv->rep_sync(0) to on DB_EVENT_REP_CLIENT and DB_EVENT_REP_NEWMASTER(for client)
  changed finish_election in both cases of newly elected or was a master at DB_EVENT_REP_MASTER event
  removed unused cases of include Config and using namespace Config
  depcicated boost::program_options(libboost_program_options) 
  added files Common/Property.[h,cc] include namespace hypretable::Property
  changed definitions of MiB, KiB, etc. at Common/Property.h in Hypertable namespace 
  added class Property::Value with dependencies classes TypeDef and ValueDef<T>
  added files Common/PropertyValueEnumExt.h,c define EnumExt and gEnumExt types
  added callback set_cb_on_chg, an on change setter, to gEnumExt
  added file Common/PropertyValueGuarded.h define gBool, gInt32t and gStrings types 
  added callback set_cb_on_chg, an on change setter, to Property::ValueGuardedAtomic<T>
  added files Common/PropertiesParser.[h,cc] with classes ParserConfig, Parser
  added cfg methods g_boo(Bool), g_i32(int32_t), g_strs(Strings), g_enum_ext(gEnumExt) to PropertiesParser
  changed parsed cfg option validation and convertion is done by Property::ValueDef<T>
  added test Common/properties_parser_test
  removed test Common/config_test 
  changed Properties MapPair to <String, Property::ValuePtr>
  organized Common/Properties.[cc,h] and Config namespace and align to the new Config::Parser/ParserConfig
  changed cfg descriptions(cmdline,file desc) to new PropertiesParser configurations
  added config option Hypertable.Config.OnFileChange.Reload=True change to False will halt from reloading
  added config option Hypertable.Config.OnFileChange.Reload.Interval=600000 
  added config option Hypertable.Config.OnFileChange.file=path/hypertable-dyn.cfg (a strings type property) 
  added method Properties::load_files_by, loads cfg files from property name
  added to Config init, if main cfg file set with OnFileChange.file configured files loaded as well
  added file conf/hypertable-dyn.cfg the default configs of dynamic properties 
  changed cmake install hypertable.cfg.ini (hypertable.cfg remain for tests)
  added files and class AsyncComm/ConfigHandler 
              work with files from OnFileChange.file or use Hypertable.Config / --config file
              checks on files change and update properties for Guarded Value Types only
  added use of ConfigHandler by Hypertable.Config.OnFileChange.Reload for
              Master, Range, Thrift, FsBroker(C++) and Hyperspace
  changed property Hypertable.Logging.Level defined with gEnumExt, level is changeable at runtime
  changed property Hypertable.Verbose / --verbose to type gBool a g_boo() cfg
  added changeable at runtime configs for ThriftBroker SlowQueryLog.Enable and SlowQueryLog.LatencyThreshold
  added set_slow_query_logging call-back on ThriftBroker.SlowQueryLog.Enable change stop/start logging
  changed Hyperspace Configurations with Guarded types (g_i32) for
                Maintenance.Interval, Checkpoint.Size, LogGc.Interval, LogGc.MaxUnusedLogs, 
                KeepAlive.Interval, Lease.Interval, GracePeriod
  changed cfg Port, Workers and Reactors for cfg(Local, Qfs, Kfs, Mapr, Ceph) for the server-side
                to "FsBroker.Listen.Port",  "FsBroker.Listen.Workers",  "FsBroker.Listen.Reactors"
  changed all FsBroker configuration options to start with "FsBroker."
                specific apply on namespaces: Local, Hdfs, Mapr, Ceph, Qfs
                common options are on "FsBroker." configuration namespace
  removed completely prior DEPRECATED configuration options
  added a python module to Hypertable::Client with methods to namespace 
              module: from hypertable.hypertable_client import HypertableClient
  added supporting test HypertableClient-test (ht_client_test.py) for py2, py3, pypy2 and pypy3
  added cfg_reload a command and interpreter statement to Hyperspace(client-side) (experimental)
  TODO: test Hyperspace related (bdb) changes in big(3+ replicas) cluster environment
              apply possible/reasonable configurations to be dynamic property at run time

Version 0.9.8.14:
(2018-08-23)

  Updated for GCC 8.2, boost 1.68.0, maven 3.5.4
  Updated for Thrift 0.11.0 (no backward capabilitites)
  Updated for Ceph 13.2.0 FsBroker
  fixed ThriftBroker any shared_ptr switched to thrift::stdcxx::shared_ptr
  add new cmake option -DBOOST_NO_CXX11_SMART_PTR=1 for thrift to use Boost
  changed ThriftBroker does not need to inlcude boost
  changed ThriftBroker only apache::thrift namespace used from apache::
  removed std namespace from ThriftBroker's MetricsHandler
  added utilization of ThriftBroker.Workers configuration option 
  changed ThriftClient protocol and transport ptrs renamed with prefixed m_ as apache::thrift namespaces on-course 
  added options to link staticly with libboost, libstdc++ and libgcc 
  added new cmake option -DHT_NOT_STATIC_CORE=1
  changed Hyperspace client keep-alive handler selects a hyperspace-replica by round-robin
  added accessed with scope_guard for replica_map in ReplicationInfo
  added ReplicationInfo new methods rep_update_sites, rep_remove, rep_add, get_site 
  added a pointer to BerkeleyDbFilesystem cls in ReplicationInfo for callbacks
  changed method get_current_master of BerkeleyDbFilesystem uses safe ReplicationInfo::String get_site(int)
  added methods go_master, update_rep_sites to BerkeleyDbFilesystem
  changed BerkeleyDbFilesystem init exclude master-init and init made on DB_EVENT_REP_MASTER event with go_master
  changed BerkeleyDbFilesystem master, lost of ownership condition to is_master && master_eid != eid
  changed BerkeleyDbFilesystem condition for event DB_EVENT_REP_NEWMASTER new Master can be elected
  added on event DB_EVENT_REP_MASTER, in-case host is a new master, go_master() doing master init
  added a call to dbenv->rep_sync(0) to DB_EVENT_REP_PERM_FAILED, DB_EVENT_REP_SITE_ADDED events
  added a call of update_rep_sites for events DB_EVENT_REP_SITE_ADDED and DB_EVENT_REP_SITE_REMOVED
  added method BerkeleyDbFilesystem::update_rep_sites makes functionality of hot-adding replicas without Hyperspace.Replica.Host
  TODO: check Hyperspace related changes in cluster environment

kashirin-alex and others added 30 commits February 19, 2018 12:30
as long as not functional Python3's ThriftClient(scanner-mutator)
SerializedRead and PyPy SerializedRead. these stay out of tests
It is possible now to build in one make as many hadoop FsBrokers version
as pom(and java files) targets ready.
A new Maven project structure is applied.
src/java folder structure:
mvn/
common/
src/
pom.xml.in
assembly
fsbroker/
hadoop/
vendor-version(groupings)/
src/
pom.xml.in
assembly
FsBrokerLib/ (folder content copied to each
fsbroker-DISTRO-${HDFS_VER}/src/main/java/org/hypertable/FsBroker/lib)
thriftclient/
src/
pom.xml.in
assembly
thriftclient-hadoop-tools/
src/
pom.xml.in
assembly
hadoop_distro
ThriftClient/
hypertable-examples(temporary_here)/
CmakeFiles.txt

FSBROKER:
comment, Java doesn't mean Hadoop and viceversa as Java can include
other FsBrokers
cmakefiles at hadoop_distro create a new folder & module
mvn/fsbroker-distro-version/
it is now much easier to create a new FsBroker without double-crossing
previus versions.
How to make, It is to create new folder at
mvn/common/fsbroker/hadoop/vendor-version(groupings) with it's java and
pom files in structure of apache-2.0-7
Hadoop distro groupings, as some versions are working with the same java
code and dependecies, exceptionally to the distro version which is
populated with @HDFS_VER@
these are grouped by the format vendor-Major-minor_toMinor apache-2.0-7
is good for 2.0.0 to 2.7.5 DISTRIBUTION from apache
if there are different dependencies more/less or @HDFS_VER@ is not equal
to all a new group should be created.
Although group has one name the built and module get the actual distro
version and the built target is
ht-fsbroker-apache-hadoop-${HDFS_VER}-${VERSION}-bundled.jar
The configuration to vendor/grouping is done by the vendor cmake files
at hadoop_distro
and apache-1.0_2 group is configured as follow pattern
elseif (HDFS_VER MATCHES "^2.[0-7]")
## APACHE-HADOOP 2.0.0 to 2.7.5 DISTRIBUTION
set(HDFS_VER_GROUP "apache-2.0_7")

thriftclient is not depends on hadoop sources of any kind while depends
on thriftgen and added with libthrift and available as stand alone jar,
thrift proto version dependant
thriftclient-hadoop-tools were previusly the hypertable/common/hadoop
which are actually stand alone tools dependent on thriftclient

Available cmake ARGUMENTS:
-Dlanguages=php,pl,py2,pypy2,py3,pypy3,java,js,rb
mainly apply when thriftclient should be built as required or skipped
default is try all
-Dfsbrokers=hdfs,ceph,qfs,mapr
which FsBroker to build, required if set.
default is try all
-Dhdfs_vers=apache-2.7.5
(the full distribution format, like apache-2.7.5)
require hdfs to be in fsbrokers param
the follow can work,
-Dhdfs_vers=apache-2.7.5,apache-1.1.0,apache-1.1.1,apache-1.2.1
default is the available hdfs setup

to make a build of only java, target is make MVN_build
For the config
-Dhdfs_vers=apache-2.7.5,apache-1.1.0,apache-1.1.1,apache-1.2.1 with
Thrift available reactor order/inclusion would be as such:
[INFO] Reactor Build Order:
[INFO]
[INFO] Umbrella project for Hypertable
[INFO] Hypertable Common
[INFO] Hypertable apache-hadoop-2.7.5 FsBroker
[INFO] Hypertable apache-hadoop-1.1.0 FsBroker
[INFO] Hypertable apache-hadoop-1.1.1 FsBroker
[INFO] Hypertable apache-hadoop-1.2.1 FsBroker
[INFO] Hypertable Thrift Client - v0.10.0
[INFO] Hypertable Thrift Client - v0.10.0  - Hadoop Tools

The install result is:
-- Installing:
/opt/hypertable/0.9.8.11/lib/java/ht-fsbroker-apache-hadoop-2.7.5-0.9.8.11-bundled.jar
-- Installing:
/opt/hypertable/0.9.8.11/lib/java/ht-fsbroker-apache-hadoop-1.1.0-0.9.8.11-bundled.jar
-- Installing:
/opt/hypertable/0.9.8.11/lib/java/ht-fsbroker-apache-hadoop-1.1.1-0.9.8.11-bundled.jar
-- Installing:
/opt/hypertable/0.9.8.11/lib/java/ht-fsbroker-apache-hadoop-1.2.1-0.9.8.11-bundled.jar
-- Installing:
/opt/hypertable/0.9.8.11/lib/java/ht-thriftclient-0.9.8.11-v0.10.0-bundled.jar
-- Installing:
/opt/hypertable/0.9.8.11/lib/java/ht-thriftclient-hadoop-tools-0.9.8.11-v0.10.0-bundled.jar
-- Installing:
/opt/hypertable/0.9.8.11/lib/java/ht-common-0.9.8.11-bundled.jar

Why bundled, less open-fds by java and less issues with version
managing, while ht-fsbroker depends on ht-common and hadoop-tools on
thriftclient.
Java ThriftClient can run like:
java -cp
/opt/hypertable/0.9.8.11/lib/java/ht-thriftclient-0.9.8.11-v0.10.0-bundled.jar
org.hypertable.thrift.BasicClientTest
v0.10.0 - stands for the include Thrift proto version and the thriftgen

While hadoop distro have a change in ./ht-set-hadoop-distro.sh
change mainly is, the available hadoop FsBrokers are the jar available
in the lib/java by lib/java/ht-fsbroker-*.jar
for example, from the cmake param
-Dhdfs_vers=apache-2.7.5,apache-1.1.0,apache-1.1.1,apache-1.2.1
ht-set-hadoop-distro.sh for usage help will output the followingL:
The currently supported values for <distro> include:
apache-hadoop-1.1.0
apache-hadoop-1.1.1
apache-hadoop-1.2.1
apache-hadoop-2.7.5

ht-java-run.sh undergo a simplification and has the ARG --cp-group
ClassPathGroup which is inclose FsBroker group as thriftclient or other
might not need the fsbroker jar
ht-start-fsbroker remained with hadoop as file-system type unchanged,
while added with the classpath group ht-java-run.sh --cp-group FsBroker
-- without use of pre-generated
ruby fixup
lib linking start from first target require
-DBUILD_WITH_STATIC=ON/OFF (option to link against static )
-DENABLE_SHARED=ON  (Building static libraries by default, with ON shared and static are built with seperate targets)

More useful functions in CommonUtil.cmake
…os type but Linux)

additional available libs for static linking: libevent.a liblzma.a
 - Hypertable.Config.OnFileChange.file
 -- a module to Hypertable::Client
    methods:
            init
            create_namespace
            exists_namespace
            open_namespace
            drop_namespace
    supporting test HypertableClient-test (ht_client_test.py)

 -- ht-package re-organized
     - new forlder for tests
     - pkg building dir changed from "src" to "hypertable"
     - added extension to setup.py
  -- get, sets the default value if hasn't name
  it is not a must results are after "Waiting for connection to Hyperspace"
  - fill up properties of new cfg onto existing
 - continue on not has('config') file
- no issues with read-error for cases such as:
./ht_ssh localhost 'echo "sleeping 10"; sleep 10; echo "wokeup"'
- verifying before use
   hdfsNewBuilder
   hdfsBuilderConnect
- with
   hdfsGetUsed
   hdfsGetCapacity
  - added "T_of get_item(size_t)" to ValueGuardedVector<T>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

0