Package jp.co.acroquest.endosnipe.javelin.resource.hadoop

Source Code of jp.co.acroquest.endosnipe.javelin.resource.hadoop.HadoopJobTrackerGetter

/*******************************************************************************
* ENdoSnipe 5.0 - (https://github.com/endosnipe)
*
* The MIT License (MIT)
*
* Copyright (c) 2012 Acroquest Technology Co.,Ltd.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
******************************************************************************/
package jp.co.acroquest.endosnipe.javelin.resource.hadoop;

import java.util.ArrayList;
import java.util.List;

import jp.co.acroquest.endosnipe.common.config.JavelinConfig;
import jp.co.acroquest.endosnipe.common.entity.DisplayType;
import jp.co.acroquest.endosnipe.common.entity.ItemType;
import jp.co.acroquest.endosnipe.common.entity.ResourceItem;
import jp.co.acroquest.endosnipe.common.logger.SystemLogger;
import jp.co.acroquest.endosnipe.javelin.converter.hadoop.HadoopInfo;
import jp.co.acroquest.endosnipe.javelin.converter.hadoop.HadoopJobStatusInfo;
import jp.co.acroquest.endosnipe.javelin.converter.hadoop.HadoopMeasurementInfo;
import jp.co.acroquest.endosnipe.javelin.converter.hadoop.HadoopRecorder;
import jp.co.acroquest.endosnipe.javelin.converter.hadoop.HadoopTaskStatus;

/**
*  Hadoop JobTracker �̏����擾����Getter�B
*
* @author Ochiai
*
*/
public class HadoopJobTrackerGetter extends HadoopGetter
{
    /** Job�̏���\�����ږ� */
    private static final String ITEM_NAME_JOB              = "/mapreduce/job";

    /** Task�̏���\�����ږ� */
    private static final String ITEM_NAME_TASK             = "/mapreduce/task";

    /** Javelin�ݒ� */
    private JavelinConfig config_              = new JavelinConfig();

    @Override
    public List<ResourceItem> getValues()
    {
        SystemLogger.getInstance().info("HadoopJobTrackerGetter.getValues() : start");
        List<ResourceItem> returnList = new ArrayList<ResourceItem>();
       
        if (config_.isCollectHadoopAgentResources() == false
                || HadoopRecorder.isInitialized() == false)
        {
            return returnList;
        }
      
        // HadoopConverter �ɂ��Job, Task�̏����擾����
        HadoopMeasurementInfo measurementInfo =  HadoopMeasurementInfo.getInstance();
        List<HadoopJobStatusInfo> jobInfoList = measurementInfo.getAllJobStatusList();
        List<HadoopInfo> hadoopInfoList = measurementInfo.getAllTaskTrackerStatusList();
       
        SystemLogger.getInstance().info("HadoopJobTrackerGetter.getValues() : jobInfoList " + jobInfoList.size());

        // Job�̏����擾����
        StringBuilder jobInfoBuilder = new StringBuilder();
        jobInfoBuilder.append("[");
       
        for (HadoopJobStatusInfo jobInfo : jobInfoList)
        {
            if (jobInfoBuilder.length() > 1)
            {
                jobInfoBuilder.append(",");
            }
            String jobInfoJSON = jobInfo.getJson();
            jobInfoBuilder.append(jobInfoJSON);
            SystemLogger.getInstance().info("HadoopJobTrackerGetter.getValues() : jobInfoJSON " + jobInfoJSON);
        }
        jobInfoBuilder.append("]");
        String jobInfoListJSON = jobInfoBuilder.toString();
       
        if (jobInfoListJSON.length() > 2)
        {
            ResourceItem jobInfoItem =
                    createResourceItem(ITEM_NAME_JOB, jobInfoListJSON, ItemType.ITEMTYPE_STRING);
            returnList.add(jobInfoItem);
            SystemLogger.getInstance().info("HadoopJobTrackerGetter.getValues() : jobInfoListJSON " + jobInfoListJSON);
        }
       
        SystemLogger.getInstance().info("HadoopJobTrackerGetter.getValues() : hadoopInfoList " + hadoopInfoList.size());

        // Task�̏����擾����
        StringBuilder taskInfoBuilder = new StringBuilder();
        taskInfoBuilder.append("[");

        for (HadoopInfo hadoopInfo : hadoopInfoList)
        {
            jp.co.acroquest.endosnipe.javelin.util.ArrayList<HadoopTaskStatus> taskStatusList =
                    hadoopInfo.getTaskStatuses();
            for(HadoopTaskStatus taskStatus : taskStatusList)
            {
                if (taskInfoBuilder.length() > 1)
                {
                    taskInfoBuilder.append(",");
                }
                taskStatus.setHostname(hadoopInfo.getHost());
                String taskStatusJSON = taskStatus.getJson();
                taskInfoBuilder.append(taskStatusJSON);
                SystemLogger.getInstance().info("HadoopJobTrackerGetter.getValues() : taskStatusJSON " + taskStatusJSON);
            }
        }
        taskInfoBuilder.append("]");
        String taskInfoListJSON = taskInfoBuilder.toString();
       
        if (taskInfoListJSON.length() > 2)
        {
            ResourceItem taskInfoItem =
                    createResourceItem(ITEM_NAME_TASK, taskInfoListJSON, ItemType.ITEMTYPE_STRING);
            returnList.add(taskInfoItem);
            SystemLogger.getInstance().info("HadoopJobTrackerGetter.getValues() : taskInfoListJSON " + taskInfoListJSON);
        }
       
        SystemLogger.getInstance().info("HadoopJobTrackerGetter.getValues() : end");

        return returnList;
    }

    @Override
    public ItemType getItemType()
    {
        return ItemType.ITEMTYPE_STRING;
    }

    /**
     * ResourceItem���쐬����
     *
     * @param name Item Name
     * @return JMX�̒l���擾�������ʂ� ResourceItem �̌`���ŕԂ�
     */
    private ResourceItem createResourceItem(String name, String value,
            ItemType itemType)
    {
        ResourceItem retValue = new ResourceItem();

        retValue.setValue(value);
        retValue.setItemType(itemType);
        retValue.setObjectName(name);
        retValue.setName(name);
        retValue.setObjectDisplayNeme(name);
        retValue.setDisplayName(name);
        retValue.setDisplayType(DisplayType.DISPLAYTYPE_NORMAL);

        return retValue;
    }

}
TOP

Related Classes of jp.co.acroquest.endosnipe.javelin.resource.hadoop.HadoopJobTrackerGetter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.