hadoop集群构建

Hadoop集群搭建

1.机器规格

CPU:2个四核 2~2.5 GHz CPU

内存:8~16GB ECC RAM(非ECC会产生校验和错误)

存储器:4*1T SATA硬盘(硬盘大小一般是数据量的3—5倍)

网络:千兆以太网

PS:namenode一般采用64位硬件,避免32位机java堆3g限制

具体规格情况跟数据量有关。

2.所需环境和软件:

系统:linux系统

软件:

Ssh:机器之间实现通信

rsync(scp):log文件传输

rz/sz:实现windows系统与linux系统之间的文件上传下载

secureCRT:linux客户端

jdk1.6+

mysql :metadata存放

hadoop-1.0.3:

hive-0.8.1:版本之间发布时间与hadoop相近

hbase-0.92.0:同上(没需要可以不装)。

sqoop-1.3.0:cloudera版本

3.安装hadoop所需软件

1)所有集群机器创建用户组hadoop,用户hadoop.

2)同时修改机器名字:$hostname master20

查看机器名字:$hostname

3) 所有集群机器修改/etc/hosts文件:

127.0.0.1  localhost

192.168.2.20  master20

192.168.2.21  node21

192.168.2.22  node22

192.168.2.23  node23

192.168.2.24  node24

192.168.2.25  node25

 

4)建立ssh无密码登录:

a.在NameNode(master20)执行

$ssh-keygen –t dsa –P  ‘’  –f  ~/.ssh/id_dsa

$cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

$ssh localhost

如果不是默认端口(如端口是1234),修改conf/hadoop-env.sh:

export HADOOP_SSH_OPTS="-p 1234" 

b.实现NameNode无密码登录其他DataNode(node21,node22….)

$scp  ~/.ssh/id_dsa.pub hadoop@192.168.1.21:/home/hadoop/

登录到 192.168.2.21

$cat /home/hadoop/id_dsa.pub >> ~/.ssh/authorized_keys

Ps:如果namenode还是无法访问datanode:$chmod 600  ~/.ssh/authorized_keys

c.关闭防火墙.最起码要开放hadoop所需端口。

5)安装jdk1.6+,mysql到/usr/local/

/usr/local/jdk1.6.0_14

/usr/local/mysql

4.安装hadoop

安装路径:/data/hadoop/tools/

1)  下载hadoop-1.0.3.tar:

a.解压到/data/hadoop/tools/

$tar –zvxf hadoop-1.0.3.tar.gz

b.编辑hadoop用户环境

export JAVA_HOME=/usr/local/jdk1.6.0_14

export JRE_HOME=/usr/local/jdk1.6.0_14/jre

export HADOOP_HOME=/data/hadoop/tools/hadoop-1.0.3

export HIVE_HOME=/data/hadoop/tools/hive-0.8.1

 

export CLASSPATH=.: $ JAVA_HOME/lib: $ JRE_HOME/lib: $ CLASSPATH

export PATH=$ JAVA_HOME/bin: $ JRE_HOME/bin: $ HADOOP_HOME/bin: $PATH

2)  Hadoop主要配置hadoop-1.0.3/conf

5.conf/hadoop-env.sh

export JAVA_HOME=/usr/local/jdk1.6.0_14

如果路径中间有空格:用单引号

  1.conf/core-site.xml,conf/hdfs-site.xml,conf/mapred-site.xml

core-site.xml:

<configuration>

<property>

    <name>hadoop.tmp.dir</name>

    <value>/data/hadoop/tools/tmp</value>

</property>

<property>

    <name>fs.default.name</name>

    <value>hdfs://192.168.2.20:9000</value>

</property>

</configuration>

 

hdfs-site.xml(replication默认是3,不修改,datanode少于3就报错):

<configuration>

<property>

    <name>dfs.replication</name>

    <value>1</value>

</property>

</configuration>

 

mapred-site.xml(如果集群足够大,不要设在namenode上):

<configuration>

<property>

    <name>mapred.job.tracker</name>

    <value>192.168.2.20:9001</value>

</property>

<property>

    <name>mapred.tasktracker.map.tasks.maxinum</name>

    <value>3</value>

<final>true</ final >

</property>

<property>

    <name>mapred.tasktracker.reduce.tasks.maxinum</name>

    <value>1</value>

<final>true</ final >

</property>

<property>

    <name>mapred.child.java.opts</name>

    <value>-Xmx400m</value>

</property>

 </configuration>

    2.scp 复制文件到所有datanode

  3.配置namenode的conf/masters,conf/slaves

Masters:192.168.2.20

Slaves:

192.168.2.21

192.168.2.22

192.168.2.23

192.168.2.24

192.168.2.25

 

6.进入hadoop-1.0.3/bin。执行$hadoop namenode –format

启动hadoop:$./start-all.sh

如果不能执行,chmod 755 *

Namenodes上执行$jps

5946  SecondaryNameNode

6120  Jps

6026  JobTracker

5838  NameNode

DataNode上结果:

5660  Jps

5580  TaskTracker

5516  DataNode

      查看集群状态:$hadoop dfsadmin –report

  退出安全模式:$hadoop dfsadmin –safemode leave

      Hadoop的web方式查看:http://192.168.2.20:50070

2.hive安装

1)下载解压hive-0.8.1到/data/hadoop/tools/

/data/hadoop/tools/hive-0.8.1

2) 环境变量更改

export HIVE_HOME=/data/hadoop/tools/hive-0.8.1

export PATH=$HIVE_HOME/bin

3) 配置hive-site.xml

<property>
  <name>hive.metastore.local</name>
  <value>true</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://localhost:3306/hive ?characterEncoding=UTF-8 </value>
</property>
<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.mysql.jdbc.Driver</value>
</property>
 
<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>hive</value>
</property>
 
<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>123456</value>
</property>
<property>
  <name>datanucleus.fixedDatastore</name>
  <value>false</value>
</property>

<property>
  <name>hive.cli.print.header</name>
  <value>true</value>
</property>

 

4) mysql-connector-java-5.1.6.jar放入到hive的lib目录下面

5)配置mysql(默认编码为utf8)

mysql -u root -p
输入安装mysql时为root指定的密码,然后进入mysql的界面。
首先为Hive创建存放元数据的数据库
create database hive;

alter database hive character set latin1;

解决767错误:

修改字段注释字符集

alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;

修改表注释字符集

alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;

然后,创建一个操作hive的mysql用户:(一定要给用户创建create表的权限 ,因为当我们第一次连接hive的时候,hive会在mysql中创建一些表)
grant create,select,insert,update,delete on *.* to hive@"%" Identified by "123456";

alter database hive character set utf8;

6)配置hivelog4j:      

cp hive-log4j.properties.template hive-log4j.properties

将org.apache.hadoop.metrics.jvm.EventCounter

改为org.apache.hadoop.log.metrics.EventCounter

 

posted on 2013-06-07 14:59  数据这条路...  阅读(223)  评论(0)    收藏  举报

导航