Data inside hive tables is stored in HDFS. When looking at a statement to create a hive table you can configure the location of the data in hdfs (e.g. /user/hive/warehouse). For every database (a.k.a. schema) a folder ./.db is created, and inside there are the tables of this schema, also organized in folders. If you decide to partition your data, let's say, one partition per day, there will be an extra folder with the name of the partition key and respective values (e.g. ./data_from=20150415), which will be translated into an extra column in the hive table and thus allows to query data from only a subset of the dataset much faster. You can also decide to have the data stored as plain text or in a compressed format, depending on the use case (some tools can't handle compressed data, others can).
The information about a hive table (the table structure) is stored in the so-called hive-metastore, which is an own database outside of hdfs (e.g. mysql, per default it is a derby database on the hive client host. Holding it in a dedicated database server helps you preserving that information when the hive client explodes and simplifies backup issues (Configuring the Hive Metastore).
I do not fully understand your second question (does it restructure the source data?). If you have existing data (like .csv), there are different ways to use it. 1) You can create a "normal" table as described above. Then the source data is not moved, but only linked to the table. But careful, if you drop the table, the source data is gone, too. 2) You can avoid that last pitfall by creating an EXTERNAL table, keeping the source data in place, even if you drop the table. 3) You can create an empty table and load data into it (LOAD DATA INPATH '/home/admin/userdata/data1.txt' INTO TABLE user;). Then the source data is physically moved to the location of the table and also restructured depending on how you defined the empty table.