I have created a wallet using
geth on my mac. I have sent a small amount from Kraken to that account but its stuck on "sending".
Do I need to download the blockchain first on my node so it can be sent? What am I missing?
In order to sent a transaction the wallet needs to know how many transactions you have sent before. This is a build in protection to prevent replay attacks.
When you try to sent a transaction while the chain is not up-to-date it can't know how many transactions have been sent.
Please wait till your chain is synced and the transaction should be sent.
Assuming you sent Ether from Kraken to your
geth account, you have to wait for your
geth client to fully synchronize the blockchain. As your transaction is stored in the chain, your node will only know about it after parsing the whole chain.
There is an alternative available, if you run
geth --fast it does not download the full chain but only the latest state. This will allow you pretty fast to see your funds arriving in your local client. Read more on geth fast sync here.