Does a hash function necessarily need to allow arbitrary length input? I always assumed that a hash function allows input of arbitrary length, since that's what all the hash functions I was aware of did. Wikipedia's definition of a hash function is as follows:

A hash function is any function that can be used to map data of arbitrary size to fixed-size values.

However, some functions like bcrypt, which label themselves as password hash functions, define a maximum size input length (in the case of bcrypt, 72 bytes). This seems like a contradiction, and has lead me to come up with two possible explanations:

Password hash functions, although similar in name, are not hash functions.
Arbitrary length inputs is not a strict requirement for hash functions, merely a common feature.

As such, I would like to know how to resolve this apparent contradiction. Is it necessary for a hash function to allow arbitrary length inputs or not?
Is it necessary for a hash function to allow arbitrary length inputs or not?

Of course not.  SHA-256 is limited to inputs of 18,446,744,073,709,551,615 bits or less; it is not defined for larger inputs; SHA-256 is not disqualified from being considered a hash function because of this limitation.