How to check the balance of the list of 1 million Bitcoin Addresses? Is there such a program?
You'll clearly need bitcoin core or at least it's chain data.
Option 1.
There are programs
like this one (Google result) that parse the chain data and return more usable formats, from csv to proper database.
The one I've found returns the addresses with balance. You'll search the addresses there (and if not found then the balance is 0)
Option 2.
Play directly with bitcoin core with RPC calls.
ListUnspent will give you the list of unspent inputs for one or more addresses.
You'll have to compose from them the actual balance though.