ODI 11g and ODI 12c: What’s an Agent?
Learn about standalone, Java EE, and colocated agents, which are located on the server and listen to a port for incoming requests.
Join the DZone community and get the full member experience.Join For Free
What Is an Agent?
An agent is a Java process that's usually located on the server and listens to a port for incoming requests. It runs the requested scenario, reverse-engineers requested datastores, etc.
When a job submitted through ODI Studio GUI or through the startscen.sh agent gets scenario from the work repository and topology definitions from master repository, it combines and converts them into a runnable job, usually consisting of more than one code block. Then, it sends code blocks to destination environments, which may be DB servers, file servers, Hadoop name nodes, etc. Finally, the agent gets job statuses from these environments and writes into work repository tables for us to see from the Operator tab of ODI Studio.
Agent diagram from Oracle A-Team blog
It is the basic agent of ODI. It does not require an application server like JEE Agent. It is easy to configure, start, and stop this agent from the shell. I’ve always used this agent and never tried other versions. This is the most lightweight and low footprint choice.
When it comes to the Java Enterprise Edition agent, which requires an application server, in most documentation, you can see the name of the WebLogic Server since it’s another Oracle product.
Depending on this CertMatrix of Oracle, ODI 22.214.171.124.0 only supports WLS and does not support Tomcat or other application servers. You may — or may not — configure them to run together, but this is not supported.
This agent is first delivered with ODI 11g and it still exists in ODI 12c.
Some pros of JEE agent are:
- High availability: Through Web Logic Server’s cluster architecture, even if a node is down, agents may run on other nodes.
- Configurable connection pooling: Connection pool can be configured through WLS.
- Monitoring: Oracle Enterprise Manager can monitor, configure, alert, and manage ODI JEE agents. But there is a plug-in to be installed to achieve this tasks from OEM.
This is the newest agent type that arrived with ODI 12c. It's like a combo of other two types. The agent is a standalone agent, but it can be monitored and configured through WLS. Unfortunately, it does not take advantage of connection pooling or high availability. Our agent will be in the WLS domain and can be managed through WLS — and that’s all. It is lighter than the JEE agent. Companies that prefer JEE Agent as production agents should choose the colocated agent as their dev/test agent.
Agent types diagram from Gerard Nico’s website
Where to Locate an Agent
To decrease network I/O, it is better to locate the agent for the target DB server. Since the agent submits code to DB Engine, it is better for them to be on the same machine. Don’t forget that ODI is an ELT tool, which means it will load data into target server and then transform your data. So, most of the load will be on the target server, which also means that most of the code will be submitted to the target server.
Also, since an agent is a local Java process, the agent will write files to the machine upon which it is set up. If you have a file server other than the DB server, it's better to have another agent on the file server to handle read/write file processes. Mounting the file server directory to the DB server as a directory and setting up only one agent is another solution.
Also, these solutions will prevent any firewall-related problems.
Thanks for reading — don’t forget to share and comment!
Published at DZone with permission of Canburak Tumer. See the original article here.
Opinions expressed by DZone contributors are their own.