2018年3月6日火曜日

Solr (HDP Search) を6.6.2にアップグレード

アップグレードをテストするために古いバージョンをインストール

wget http://public-repo-1.hortonworks.com/HDP-SOLR/hdp-solr-ambari-mp/solr-service-mpack-2.2.8.tar.gz
ambari-server install-mpack --mpack=./solr-service-mpack-2.2.8.tar.gz
ambari-server restart
# Install Solr from Ambari Web UI normally

ブラウザーから、現在のコンフィグを取っておく(後で比較する)

アップグレード

ambari-server upgrade-mpack --mpack=./solr-service-mpack-3.0.0.tar.gz
ambari-server restart

新しいrepoファイルをダウンロード(追記:repoinfo.xmlが正しい場合は必要ないかも?)
curl -o /etc/yum.repos.d/hdp-solr.repo http://public-repo-1.hortonworks.com/HDP-SOLR-3.0.0-100/repos/centos6/hdp-solr.repo

ちなみに、下記ファイルは同じではないが、シムリンクでsolr-ambari-mpack-3.0.0以下にある
[root@sandbox-hdp HDP]# pwd
/var/lib/ambari-server/resources/stacks/HDP
[root@sandbox-hdp HDP]# grep -IRs 'HDP-SOLR' -l *
2.4/services/SOLR/repos/repoinfo.xml
2.5/repos/repoinfo.xml

2.6/services/SOLR/repos/repoinfo.xml
[root@sandbox-hdp HDP]# grep -IRs 'public-repo-1.hortonworks.com/HDP-SOLR-3.0.0-100' -l *

2.6/services/SOLR/repos/repoinfo.xml


mv /var/run/solr/solr-8983.pid /var/run/solr/solr-8983.pid.backup
# Delete Solr Service from Ambari web UI
mv /var/run/solr/solr-8983.pid.backup /var/run/solr/solr-8983.pid
/opt/lucidworks-hdpsearch/solr/bin/solr stop -all

# Metrics didn't exist (from 2.2.9)
#/opt/lucidworks-hdpsearch/metrics/bin/solr.metrics.sh stop
#bash: /opt/lucidworks-hdpsearch/metrics/bin/solr.metrics.sh: No such file or directory

mkdir /opt/lucidworks-hdpsearch-backup
cp -vR /opt/lucidworks-hdpsearch/* /opt/lucidworks-hdpsearch-backup/
yum upgrade lucidworks-hdpsearch -y

# Didn't work, ”Unrecognized or misplaced argument: cp!”
#/opt/lucidworks-hdpsearch/solr/bin/solr zk cp -z `hostname -f`:2181 -r zk:/solr/configs /tmp/solr/configs
/opt/lucidworks-hdpsearch/solr/bin/solr zk -z `hostname -f`:2181/solr -downconfig -n collection1 -d /tmp/solr/configs

[root@sandbox-hdp ~]# cd /tmp/solr/configs/conf/
[root@sandbox-hdp conf]# ls -ltr
total 148
-rw-r--r-- 1 root root   873 Mar  6 05:56 protwords.txt
-rw-r--r-- 1 root root  3974 Mar  6 05:56 currency.xml
-rw-r--r-- 1 root root 61978 Mar  6 05:56 solrconfig.xml
-rw-r--r-- 1 root root 55543 Mar  6 05:56 managed-schema
-rw-r--r-- 1 root root  1119 Mar  6 05:56 synonyms.txt
-rw-r--r-- 1 root root  1348 Mar  6 05:56 elevate.xml
-rw-r--r-- 1 root root   781 Mar  6 05:56 stopwords.txt
-rw-r--r-- 1 root root   308 Mar  6 05:56 params.json
drwxr-xr-x 2 root root  4096 Mar  6 05:56 lang

# Edit solrconfig.xml and upload
<luceneMatchVersion>6.6.2</luceneMatchVersion>

/opt/lucidworks-hdpsearch/solr/bin/solr zk -z `hostname -f`:2181/solr -upconfig -n collection1 -d /tmp/solr/configs

# Add Solr form Ambari web ui
# In the service selection screen, be sure the version displayed is 6.6.2
# After installing, review the config

# healthcheck
sudo -iu solr /opt/lucidworks-hdpsearch/solr/bin/solr healthcheck -c collection1 -z `hostname -f`:2181/solr
{
  "collection":"collection1",
  "status":"healthy",
  "numDocs":0,
  "numShards":2,
  "shards":[
    {
      "shard":"shard1",
      "status":"healthy",
      "replicas":[{
          "name":"core_node1",
          "url":"http://sandbox-hdp.hortonworks.com:8983/solr/collection1_shard1_replica1/",
          "numDocs":0,
          "status":"active",
          "uptime":"0 days, 0 hours, 12 minutes, 10 seconds",
          "memory":"142.6 MB (%29) of 492 MB",
          "leader":true}]},
    {
      "shard":"shard2",
      "status":"healthy",
      "replicas":[{
          "name":"core_node2",
          "url":"http://sandbox-hdp.hortonworks.com:8983/solr/collection1_shard2_replica1/",
          "numDocs":0,
          "status":"active",
          "uptime":"0 days, 0 hours, 12 minutes, 10 seconds",
          "memory":"142.6 MB (%29) of 492 MB",
          "leader":true}]}]}


補足:

curl -s -u admin:admin "http://`hostname -f`:8080/api/v1/stacks/HDP/versions/2.6/repository_versions/1?fields=operating_systems/repositories/Repositories/*" -o /tmp/repo_ver_1.json
grep -vw 'href' /tmp/repo_ver_1.json > /tmp/repo_ver_1.1.json
sed -i.bak 's/HDP-SOLR-2.6-100/HDP-SOLR-3.0.0-100/g' /tmp/repo_ver_1.1.json
curl -si -u admin:admin "http://`hostname -f`:8080/api/v1/stacks/HDP/versions/2.6/repository_versions/1" -X PUT -H 'X-Requested-By: ambari' -d @/tmp/repo_ver_1.1.json

多分必要ない?
#mv /etc/yum.repos.d/ambari-hdp-1.repo ./
#ambari-server restart --skip-database-check; ambari-agent restart

Ambari 2.6.0のLDAP Sync

[root@sandbox-hdp ~]# ambari-server sync-ldap --ldap-sync-admin-name=admin --ldap-sync-admin-password=admin --all --verbose
Using python  /usr/bin/python
Syncing with LDAP...
INFO: Loading properties from /etc/ambari-server/conf/ambari.properties
INFO: Loading properties from /etc/ambari-server/conf/ambari.properties
INFO: about to run command: ps -p 75967
INFO:
process_pid=54184
Syncing all.
Calling API http://127.0.0.1:8080/api/v1/ldap_sync_events : [{'Event': {'specs': [{'principal_type': 'users', 'sync_type': 'all'}, {'principal_type': 'groups', 'sync_type': 'all'}]}}]
..

Completed LDAP Sync.
Summary:
  memberships:
    removed = 0
    created = 0
  users:
    skipped = 1
    removed = 0
    updated = 0
    created = 0
  groups:
    updated = 0
    removed = 0
    created = 0

Ambari Server 'sync-ldap' completed successfully.


org.apache.ambari.server.api.services.LdapSyncEventService#createEvent

ambari-server.log
06 Mar 2018 03:43:36,214  INFO [pool-24-thread-1] AmbariLdapDataPopulator:736 - Reloading properties
06 Mar 2018 03:43:36,301  INFO [pool-24-thread-1] AmbariLdapDataPopulator:221 - User 'admin' skipped because it is local user

org.apache.ambari.server.controller.AmbariManagementControllerImpl#synchronizeLdapUsersAndGroups
org.apache.ambari.server.security.ldap.AmbariLdapDataPopulator#synchronizeAllLdapUsers
org.apache.ambari.server.security.ldap.AmbariLdapDataPopulator#getExternalLdapUserInfo
org.apache.ambari.server.security.ldap.AmbariLdapDataPopulator#getFilteredLdapUsers(java.lang.String, org.springframework.ldap.filter.Filter)

      LOG.trace("LDAP User Query - Base DN: '{}' ; Filter: '{}'", baseDn, encodedFilter);

      List dtos = configuration.getLdapServerProperties().isPaginationEnabled() ?
# authentication.ldap.pagination.enabled=false does matter?


Sandbox (HDP 2.6.3)でYarn Scheduler Load Simulator (SLS)を実行してみる

Ref: https://hadoop.apache.org/docs/r2.4.1/hadoop-sls/SchedulerLoadSimulator.html

su - yarn    # yarnになるのに特に理由なし
export HADOOP_ROOT=/home/yarn/hadoop

tar -xf /usr/hdp/2.6.3.0-235/hadoop/mapreduce.tar.gz
cat $HADOOP_ROOT/share/hadoop/tools/sls/sample-conf/sls-runner.xml   #Refと場所が違う
cp -r /etc/hadoop/conf/ $HADOOP_ROOT/etc/hadoop/
cp $HADOOP_ROOT/share/hadoop/tools/sls/sample-conf/sls-runner.xml $HADOOP_ROOT/etc/hadoop/sls-runner.xml
vim $HADOOP_ROOT/etc/hadoop/sls-runner.xml   # デフォルトでOK?

cd $HADOOP_ROOT/share/hadoop/tools/sls # or cd ./hadoop/share/hadoop/tools/sls
bash -x bin/slsrun.sh --input-rumen=sample-data/2jobs2min-rumen-jh.json --output-dir=sample-output


TODO: NPEがでる

18/03/06 00:49:43 INFO capacity.CapacityScheduler: Added node a2116.smile.com:3 clusterResource: <memory:40960, vCores:40>
Exception in thread "main" java.lang.RuntimeException: java.lang.NullPointerException
        at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:134)
        at org.apache.hadoop.yarn.sls.SLSRunner.startAMFromRumenTraces(SLSRunner.java:398)
        at org.apache.hadoop.yarn.sls.SLSRunner.startAM(SLSRunner.java:250)
        at org.apache.hadoop.yarn.sls.SLSRunner.start(SLSRunner.java:145)
        at org.apache.hadoop.yarn.sls.SLSRunner.main(SLSRunner.java:528)
Caused by: java.lang.NullPointerException
        at java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:936)
        at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:126)
        ... 4 more


http://sandbox-hdp.hortonworks.com:10001/simulate

java.lang.NullPointerException
        at org.apache.hadoop.yarn.sls.web.SLSWebApp.printPageSimulate(SLSWebApp.java:219)
        at org.apache.hadoop.yarn.sls.web.SLSWebApp.access$100(SLSWebApp.java:54)
        at org.apache.hadoop.yarn.sls.web.SLSWebApp$1.handle(SLSWebApp.java:131)
        at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
        at org.mortbay.jetty.Server.handle(Server.java:326)
        at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
        at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928)
        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
        at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
        at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)