What for are spark.memory.offheap.size and spark.memory.offheap.enabled?
spark.memory.offHeap.enabled: Parameter to enable/disable the use of off-heap memory.
spark.memory.offHeap.size: The total amount of memory in bytes for off-heap allocation(from the native memory). It has no impact on heap memory usage, also make sure not to exceed your executor’s total limits.
Do I manually need to specify the amount of off-heap memory for Tungsten here?
Yes.
Besides enabling OffHeap memory, you need to manually set its size to use Off-Heap memory for spark Applications. Note that Off-heap memory model includes only Storage memory and Execution memory.
The Image below is the abstract Concept when Off-Heap memory is in action.

• If the Off-heap memory is enabled, there will be both On-heap and Off-heap memory in the Executor.
• The storage memory of the Executor = Storage Memory On-Heap + Storage Memory Off-Heap
• The Execution memory of the Executor = Execution memory On-Heap + Execution memory Off-Heap