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)配置hive的log4j:
cp hive-log4j.properties.template hive-log4j.properties
将org.apache.hadoop.metrics.jvm.EventCounter
改为org.apache.hadoop.log.metrics.EventCounter
浙公网安备 33010602011771号