hive任务的mappe-reducer数量

 

 1 hive mapper数量:

 

hadoop mapper数量以及hive对此的优化:

hadoop2中,

5000个100M左右的文件,则会产生5000个map任务,建立5000个进程来执行销毁成本较高,

hive默认是使用CombileFileInputFormat,对小文件进行合并,来减少mapper数,

每个进程的开启和关闭耗时,涉及cpu io 带宽 jvm等。

hive-default.xml.template中默认设置如下:

  <property>
    <name>hive.input.format</name>
    <value>org.apache.hadoop.hive.ql.io.CombineHiveInputFormat</value>
    <description>The default input format. Set this to HiveInputFormat if you encounter problems with CombineHiveInputFormat.</description>
  </property>

 这样在hive执行mapper task时,会对大量小文件进行合并,让涉及到要操作的文件数据所存储的小文件先进行文件块合并,减少操作的split后在对合并后的文件进行mapper task操作(比如要对 10个50M的存储hdfs文件进行mapper操作,先处理成5个100M的在对这5个文件进行处理这样从10个mapper进程减少到5个)

 

 

疑问:  hive>descirbe extended stu;后看到表stu都是 textinputformat  textoutputformat,

         那么这个表的两个format和hive配置文件默认的CombineHiveInputFormat各自使用场景区别在哪?

         目前没理解好,找不到答案。

 

 

 

总结: hive mapper数量由两个因素决定 1 inputsplit   2 CombineHiveInputFormat

 

 

 

 2  hive reducer数量:

 

 

这是默认reducer task任务个数, hive-default.xml.template中设置为:

<property>
    <name>hive.exec.reducers.max</name>
    <value>1009</value>
    <description>
      max number of reducers will be used. If the one specified in the configuration parameter mapred.reduce.tasks is
      negative, Hive will use this one as the max number of reducers when automatically determine number of reducers.
    </description>
  </property>

 

hive中查看当前设置的reducer任务个数:

hive>set mapred.reduce.tasks
mapred.reduce.tasks=-1 

 数值为-1时,hive会自动推测决定reduce task数量,而最大数值在上面配置文件中配置好了为1009

如果reduce task个数超过这个数值时,就会排队等待,

 

设置hivereducer个数:

hive (default)> set mapred.reduce.tasks;  
mapred.reduce.tasks=3

 

设置后就意味着hive.exec.reducer.max=3

 

 

每个reduce任务处理的数据量也是由限定的,hive-default.xml.template中设置为:

  <property>
    <name>hive.exec.reducers.bytes.per.reducer</name>
    <value>256000000</value>
    <description>size per reducer.The default is 256Mb, i.e if the input size is 1G, it will use 4 reducers.</description>
  </property>

 默认是256M,如果给reducer输入的数据量是1G,那么按照默认规则就会分拆成4个reducer。

 

 

reducer 任务个数 :

   min(向上取整(reduce输入文件大小/reducer默认处理大小) , hive.exec.reducer.max)

 

eg:

1G的reduce输入数据

hive.exec.reducers.bytes.per.reducer=256M

mapred.reduce.tasks=-1 或者 hive.exec.reducer.max=1009

 

那么真实产生recuder个数为:

 min(向上取整(1G/256m), 1009) = 4;

 

1T的reduce数据则为    min(向上取整(1T/256m), 1009) = 1009;

 

 

 

 

 

 

 

 

 
Hive-JDBC Uber Jar 是一个包含了所有依赖项的单一 JAR 文件,使得使用 Hive JDBC 连接数据库更加方便。为了下载 hive-jdbc-uber-jar,您可以按照以下步骤进行操作: 1. 打开您的网络浏览器并访问 Apache Hive 的官方网站(https://hive.apache.org/)。 2. 在页面的顶部菜单栏中,您会找到一个"Downloads"(下载)的选项。单击这个选项。 3. 在下载页面上,您可以看到不同的 Hive 版本和相关的下载链接。根据您的需求选择适合的版本。一般建议选择最新版本。 4. 找到并单击下载链接,以启动 hive-jdbc-uber-jar 文件的下载。可以选择一个合适的下载镜像,点击相关链接即可开始下载。 5. 下载完成后,您可以在您指定的下载文件夹中找到 hive-jdbc-uber-jar 文件。可以通过文件管理器打开文件夹并查看文件。 在您下载了 hive-jdbc-uber-jar 文件后,您可以将其添加到您的项目中,并使用 Hive 的 JDBC API 连接到 Hive 数据库。您可以在项目的构建路径中添加该 JAR 文件,并在代码中引入相关的类和方法。确保在代码中正确配置 JDBC 连接参数,如 Hive 服务器的 URL、用户名和密码等。 总结起来,您可以通过在 Apache Hive 官方网站下载页面上选择适当的 Hive 版本并点击相关的下载链接,从中直接下载 hive-jdbc-uber-jar 文件。这个 JAR 文件是使用 Hive JDBC 连接到 Hive 数据库时所需的所有依赖项的集合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值