Can this DS18B20 sensor be used with Arduino internal pull-up or it require exactly 4.7k pull-up resistor?
The Arduino internal pull-up is something like 50k. That is a lot different from 4.7k. You would probably find that the pull-up is not strong enough to get clean pulses from the device. Also if you are using it in one-wire (parasitic) mode notice this from the datasheet:
To assure that the DS18B20 has sufficient supply current, it is necessary to provide a strong pullup on the 1-Wire bus whenever temperature conversions are taking place or data is being copied from the scratchpad to EEPROM.
Notice the words 'strong pullup'. The internal pullup is not strong.