Hadoop-2.6.0 + Zookeeper-3.4.6 + HBase-0.98.9-hadoop2环境搭建示例 http://www.cnblogs.com/morvenhuang/p/4278656.html
完全分布式安装Hbase1.0,基于zookeeper-3.4.6和hadoop 2.6.0分布集群 http://f.dataguru.cn/thread-519503-1-1.html
安装完成后的一些命令
顺序
启动顺序:hadoop–>zookeeper–>hbase
关闭顺序:hbase–>zookeeper–>hadoop
临时命令集合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
//启动 sh /home/hadoop/hadoop/sbin/start-dfs.sh sh /home/hadoop/hadoop/sbin/start-yarn.sh cd /home/hadoop/zookeeper/bin && sh ./zkServer.sh start //每个节点执行 sh /home/hadoop/hbase/bin/start-hbase.sh //关闭 sh /home/hadoop/hbase/bin/stop-hbase.sh cd /home/hadoop/zookeeper/bin && sh ./zkServer.sh stop //每个节点执行 sh /home/hadoop/hadoop/sbin/stop-all.sh sh /home/hadoop/hadoop/sbin/stop-yarn.sh sh /home/hadoop/hadoop/sbin/stop-dfs.sh //其他 cd /home/hadoop/zookeeper/bin && sh ./zkCli.sh -server h1:2181 sh /home/hadoop/zookeeper/bin/zkServer.sh status service ntpd stop && ntpdate 192.168.0.31 && service ntpd start //同步各个节点时钟 |
可以登录web界面检查hadoop是否运行正常:
hdfs管理界面同h1:http://192.168.0.61:50070/ 可以查看datanode信息: http://192.168.0.61:50070/dfshealth.html#tab-datanode
yarn的管理界面h1: http://192.168.0.61:8088/
hbase界面: http://h1:16010/master-status
整合Spring注意, 执行程序的时候, 注意设定变量: -Dhadoop.home.dir=/home/pandy/hadoop-2.7.3/
开始安装
规划: 由于我是vm下面做实验, 所以只能分配这些虚拟机的内存是1.3G左右.
Node Name Hbase1.0 Master ZooKeeper3.4.6 RegionServer Hadoop2.6.0
192.168.0.61 h1 yes yes no master
192.168.0.61 h2 backup yes yes slave
192.168.0.61 h3 no yes yes slave
基础配置
1. 打通本地到3个虚拟机的ssh免密码登陆, 通过本地的系统链接到3个服务器去安装,打通信道是为了方便
1 2 3 4 5 6 7 8 |
ssh-keygen -t rsa ssh-copy-id root@192.168.0.61 ssh-copy-id root@192.168.0.62 ssh-copy-id root@192.168.0.63 //测试, 测试完成退出到本地 ssh root@192.168.0.61 ssh root@192.168.0.62 ssh root@192.168.0.63 |
2. 在3个虚拟机里面 禁用IP6, 修改hosts, 全部关闭防火墙
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
vim /etc/sysctl.conf //然后添加以下内容:# 禁用整个系统所有接口的IPv6 net.ipv6.conf.all.disable_ipv6 = 1 vim /etc/hosts //注释掉ip6的映射和加入 127.0.0.1 localhost localhost.localdomain 192.168.0.61 h1 192.168.0.62 h2 192.168.0.63 h3 //关闭iptables chkconfig ip6tables off chkconfig iptables off //关闭selinux vim /etc/selinux/config //修改配置: SELINUX=disabled 禁止启动selinux yum -y install telnet // 安装网络工具 |
重启所有虚拟机
3. 配置时钟同步
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
vim /etc/ntp.conf //61服务器, 加入 restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap #启动, 开机启动 chkconfig ntpd on && service ntpd restart && service ntpd status //其他服务器 关闭网络并加入, /重启所有系统,然后测试时钟同步 关于时钟更多信息 http://cn.linux.vbird.org/linux_server/0440ntp.php vim /etc/ntp.conf //注释掉外网同步, 使用内网服务器h1做同步服务器 #server 0.centos.pool.ntp.org iburst #server 1.centos.pool.ntp.org iburst #server 2.centos.pool.ntp.org iburst #server 3.centos.pool.ntp.org iburst server 192.168.0.61 //h2,h3客户端测试 ntpdate 192.168.0.61 //输出类似表示成功, 如果不成功, 就多次重启61服务器的ntp服务: service ntpd restart 4 Nov 09:21:22 ntpdate[1222]: adjust time server 192.168.0.51 offset -0.201301 sec //查看客户机器同步状态 ,开启服务, 开机启动 chkconfig ntpd on && service ntpd restart && service ntpd status ntpstat //检查客户端状态 #输出类似表示成功 synchronised to NTP server (192.168.0.51) at stratum 4 time correct to within 8100 ms polling server every 64 s |
======================================================打通虚拟机信道
1. 在3个虚拟机里面创建一样的hadoop账户
1 2 3 |
groupadd hadoop useradd -g hadoop hadoop passwd hadoop //设定一样的密码: hadoop123 , 也可以不一样,只要你记得住 |
2. 61服务器对其他服务器的无密码访问配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
//==========这里不需要 su hadoop //配置hadoop账户免密 ssh-keygen -t rsa cd /home/hadoop/.ssh cat id_rsa.pub >> authorized_keys ssh-copy-id root@192.168.0.61 ssh-copy-id root@192.168.0.62 ssh-copy-id root@192.168.0.63 ssh-copy-id root@h1 ssh-copy-id root@h2 ssh-copy-id root@h3 su root //设定root账户免密 ssh-keygen -t rsa cd /root/.ssh cat id_rsa.pub >> authorized_keys ssh-copy-id root@192.168.0.61 ssh-copy-id root@192.168.0.62 ssh-copy-id root@192.168.0.63 ssh-copy-id root@h1 ssh-copy-id root@h2 ssh-copy-id root@h3 //从61服务器测试, 测试完成退出到61服务器 ssh root@h3 ssh root@192.168.0.63 |
准备安装hadoop
1. 本地传文件jdk1.7, hadoop-2.6.0.tar.gz, zookeeper-3.4.8.tar.gz, hbase-1.1.0-bin.tar.gz到61服务器, 几乎所有配置都是在h1完成, 然后分发到其他服务器
1 2 3 4 5 6 7 8 9 |
//传文件 scp /mnt/E/4_开发软件/Hadoop/jdk-7u67-linux-x64.rpm root@192.168.0.61:/home/hadoop scp /mnt/E/4_开发软件/Hadoop/安装包/hadoop-2.6.0.tar.gz root@192.168.0.61:/home/hadoop scp /mnt/E/4_开发软件/Hadoop/安装包/zookeeper-3.4.8.tar.gz root@192.168.0.61:/home/hadoop scp /mnt/E/4_开发软件/Hadoop/安装包/hbase-1.1.0-bin.tar.gz root@192.168.0.61:/home/hadoop //61服务器改变权限, 因为使用root账户传入, 所以需要改变权限 chown -R hadoop:hadoop /home/hadoop |
2. 61服务器安装jdk
1 2 3 |
su root cd /home/hadoop rpm -ivh jdk-7u67-linux-x64.rpm |
3. 61服务器解压三个文件和重名名文件夹, 创建hdfs文件夹
1 2 3 4 5 6 7 8 9 10 11 12 13 |
su hadoop tar -xvf hadoop-2.6.0.tar.gz && mv hadoop-2.6.0 hadoop tar -xvf zookeeper-3.4.8.tar.gz && mv zookeeper-3.4.8 zookeeper tar -xvf hbase-1.1.0-bin.tar.gz && mv hbase-1.1.0 hbase //61服务器接下来创建需要的文件夹 mkdir -p /home/hadoop/dfs/tmp mkdir -p /home/hadoop/dfs/name mkdir -p /home/hadoop/dfs/data su root mkdir -p /root/hadoopdata/namenode //在namenode上创建 mkdir -p /root/hadoopdata/datanode //在62,63两个datanode上创建 |
4. 配置环境变量, 修改如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
su root vim /etc/profile //输入一下环境变量信息 export HADOOP_HOME=/home/hadoop/hadoop export HADOOP_MAPRED_HOME=${HADOOP_HOME} export HADOOP_COMMON_HOME=${HADOOP_HOME} export HADOOP_HDFS_HOME=${HADOOP_HOME} export YARN_HOME=${HADOOP_INSTALLL} export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib:${HADOOP_HOME}/lib/native" export HBASE_HOME=/home/hadoop/hbase export HBASE_CONF_DIR=$HBASE_HOME/conf export HBASE_CLASS_PATH=$HBASE_CONF_DIR export JAVA_HOME=/usr/java/jdk1.7.0_67 export PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$HBASE_HOME/bin:$JAVA_HOME/bin:${PATH} |
马上生效和测试:
1 2 |
source /etc/profile echo $HADOOP_OPTS |
输出: -Djava.library.path=/home/hadoop/hadoop/lib:/home/hadoop/hadoop/lib/native
Hadoop集群配置
5. 修改几个配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
su hadoop vim /home/hadoop/hadoop/etc/hadoop/hadoop-env.sh //内存要设置大一点, 避免出错 export JAVA_HOME=/usr/java/jdk1.7.0_67 export HADOOP_PREFIX=/home/hadoop/hadoop export HADOOP_OPTS="-Djava.library.path=/home/hadoop/hadoop/lib:/home/hadoop/hadoop/lib/native" export HADOOP_HEAPSIZE=1024 vim /home/hadoop/hadoop/etc/hadoop/core-site.xml <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://h1:9000</value> </property> </configuration> vim /home/hadoop/hadoop/etc/hadoop/hdfs-site.xml <configuration> <property> <name>dfs.namenode.name.dir</name> <value>file:/root/hadoopdata/namenode</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/root/hadoopdata/datanode</value> </property> <property> <!-- hdfs的备份节点 --> <name>dfs.namenode.secondary.http-address</name> <value>h2:9001</value> </property> <property> <!-- hdfs副本数量,相当于slave节点数量 --> <name>dfs.replication</name> <value>2</value> <description>the num of slave</description> </property> <property> <!-- 放开权限,eclipse等能够访问 --> <name>dfs.permissions</name> <value>false</value> </property> </configuration> vim /home/hadoop/hadoop/etc/hadoop/mapred-site.xml //这个文件新建? //内存要设置大一点, 避免出错 <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapred.child.java.opts</name> <value>-Xmx200m</value> </property> </configuration> vim /home/hadoop/hadoop/etc/hadoop/yarn-site.xml <configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>h1:8025</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>h1:8030</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>h1:8040</value> </property> </configuration> vim /home/hadoop/hadoop/etc/hadoop/slaves //指定datanode节点, 这里要注意: 分发到其他节点的时候, 是slaves节点就不要注释掉localhost #localhost h2 h3 |
本地编译后覆盖服务器的库:
1 2 3 4 5 6 7 8 |
//服务器备份: cd /home/hadoop/hadoop/lib && mv native native_bak //这些是本地备份编译后文件,传到服务器 scp -r /mnt/E/4_开发软件/Hadoop/安装包/native/hadoop-2.6.0/lib/native/ root@192.168.0.61:/home/hadoop/hadoop/lib //服务器授权: chown -R hadoop:hadoop /home/hadoop |
6. 分发到其他服务器
1 2 3 4 5 6 7 8 |
su hadoop scp /home/hadoop/jdk-7u67-linux-x64.rpm root@192.168.0.62:/home/hadoop/ scp -r /home/hadoop/dfs root@192.168.0.62:/home/hadoop/ scp -r /home/hadoop/hadoop root@192.168.0.62:/home/hadoop/ scp /home/hadoop/jdk-7u67-linux-x64.rpm root@192.168.0.63:/home/hadoop/ scp -r /home/hadoop/dfs root@192.168.0.63:/home/hadoop/ scp -r /home/hadoop/hadoop root@192.168.0.63:/home/hadoop/ |
到两个节点去处理, 是因为上面用root权限传入, 到这里要赋权给hadoop账户
1 2 |
su root chown -R hadoop:hadoop /home/hadoop |
注意: 分发后记得去其他服务器修改/home/hadoop/hadoop/etc/hadoop/slaves
7. 其他节点安装jdk, 也设定环境变量, 可以简单的跟上面一致
8. 启动和停止
1 2 3 4 5 6 7 8 9 10 11 12 13 |
su root hdfs namenode -format //格式化, 在namenode的h1节点执行 hdfs datanode -format //格式化, 在datanode的h2,h3节点执行 //在h1节点执行: sh /home/hadoop/hadoop/sbin/start-dfs.sh sh /home/hadoop/hadoop/sbin/stop-dfs.sh sh /home/hadoop/hadoop/sbin/start-yarn.sh sh /home/hadoop/hadoop/sbin/stop-yarn.sh //关闭所有: sh /home/hadoop/hadoop/sbin/stop-all.sh |
退出安全模式:
1 |
hadoop dfsadmin -safemode leave |
测试:
1 2 3 4 5 6 |
hdfs dfsadmin -report //查看hdfs的一些基本信息, 输出: 三个节点的信息 yarn node -all -list //查看yarn的一些基本信息, 输出: 两个集群节点的信息 Total Nodes:2 Node-Id Node-State Node-Http-Address Number-of-Running-Containers h3:44957 RUNNING h3:8042 0 h2:45615 RUNNING h2:8042 |
验证端口是否起作用
1 2 |
telnet localhost 9000 netstat -nlp | grep 9000 |
查看线程信息:
1 2 3 4 5 6 7 8 9 10 11 12 |
[root@h1 ~]# jps <-----h1 2594 NameNode 2907 ResourceManager [root@h2 ~]# jps <-----h2 1719 NodeManager 1581 DataNode 1660 SecondaryNameNode [root@h3 ~]# jps <-----h3 1545 NodeManager 1468 DataNode |
查看日志和输出信息
1 2 3 4 5 6 7 8 |
tail -f -n3000 /home/hadoop/hadoop/logs/hadoop-root-namenode-h1.log tail -f -n3000 /home/hadoop/hadoop/logs/hadoop-root-datanode-h2.log tail -f -n3000 /home/hadoop/hadoop/logs/hadoop-root-secondarynamenode-h2.log tail -f -n3000 /home/hadoop/hadoop/logs/hadoop-root-datanode-h3.log tail -f -n3000 /home/hadoop/hadoop/logs/hadoop-root-namenode-h1.out tail -f -n3000 /home/hadoop/hadoop/logs/hadoop-root-datanode-h2.out tail -f -n3000 /home/hadoop/hadoop/logs/hadoop-root-datanode-h3.out |
测试单词统计:
传到服务器:
1 |
scp /home/pandy/workspace/HadoopApp/words_01.txt root@192.168.0.61:/tmp/words_01.txt |
从服务器到hdfs, 并执行:
1 2 3 4 5 6 7 |
hadoop fs -mkdir -p /tmp/input hadoop fs -mkdir -p /tmp/output hadoop fs -put /tmp/words_01.txt /tmp/input/words_01.txt hadoop fs -rm -r /tmp/output/1007_01 //如果已经存在就删除,否则后面无法创建 hadoop jar /home/hadoop/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar wordcount /tmp/input/words_01.txt /tmp/output/1007_01 hadoop fs -ls -R /tmp/output hadoop fs -cat /tmp/output/1007_01/part-r-00000 //这里是上面代码执行得到的结果, 名字可能不一样 |
问题:
namenode报错:could only be replicated to 0 nodes instead of minReplication
datanode报错: datanode.DataNode: Problem connecting to server
参考: http://bbs.csdn.net/topics/390769368
答案: http://zlfwmm.blog.51cto.com/5892198/1742213
答案: http://blog.csdn.net/renfengjun/article/details/25320043
Zookeeper集群配置
1. 安装, 配置需要很注意
1 2 3 4 5 6 7 8 9 10 |
cp /home/hadoop/zookeeper/conf/zoo_sample.cfg /home/hadoop/zookeeper/conf/zoo.cfg vim /home/hadoop/zookeeper/conf/zoo.cfg //原文这里配置错误, !!!!!!!!!!!!!!!!!! //当是h1节点的时候, 应该改为server.1=0.0.0.0:2888:3888, 其他: server.pid=HostName:2888:3888 //当是h2节点的时候, 应该改为server.2=0.0.0.0:2888:3888, 其他: server.pid=HostName:2888:3888 //当是h3节点的时候, 应该改为server.3=0.0.0.0:2888:3888, 其他: server.pid=HostName:2888:3888 dataDir=/root/zookeeperdata server.1=h1:2888:3888 server.2=h2:2888:3888 server.3=h3:2888:3888 |
2. 分发到其他服务器
1 2 3 4 5 6 7 8 9 10 |
//每个节点创建文件夹 mkdir -p /root/zookeeperdata scp -r /home/hadoop/zookeeper root@192.168.0.62:/home/hadoop/ scp -r /home/hadoop/zookeeper root@192.168.0.63:/home/hadoop/ su root //到两个节点去处理 chown -R hadoop:hadoop /home/hadoop //如果没有修改zoo.cfg, 那么每个节点都去修改, 当前节点对应:0.0.0.0:2888:3888 vim /home/hadoop/zookeeper/conf/zoo.cfg |
注意: 分发记得去其他服务器修改/home/hadoop/zookeeper/conf/zoo.cfg
3. 设置myid, 原文中引号, 会无法启动zookeeper!, 这里要对应server.pid=hostname:p1:p2
h1, nameonde上:
echo "1" > /root/zookeeperdata/myid
h2, datanode上:
echo "2" > /root/zookeeperdata/myid
h3, datanode上:
echo "3" > /root/zookeeperdata/myid
4. 启动和关闭
1 2 3 |
cd /home/hadoop/zookeeper/bin && sh ./zkServer.sh start //三个节点都需要启动 cd /home/hadoop/zookeeper/bin && sh ./zkServer.sh stop cd /home/hadoop/zookeeper/bin && sh ./zkCli.sh -server h1:2181 |
5. 测试
1 2 |
jps //可以看到QuorumPeerMain线程 sh /home/hadoop/zookeeper/bin/zkServer.sh status // 能看到选举之后的信息 |
每个节点的输出文件
1 |
tail -f -n3000 /home/hadoop/zookeeper/bin/zookeeper.out |
问题:
A: zookeeper It is probably not running
其他原因不说,我自己的原因是日志显示: Error processing /home/hadoop/zookeeper/bin/../conf/zoo.cfg, 是因为写入Pid的时候引号不对
B: 正常启动但无法连接其他服务器选举 Cannot open channel to,
解决: http://www.cnblogs.com/wangdaijun/p/5437349.html
Hbase集群配置
1. 配置hbase-env.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
vim /home/hadoop/hbase/conf/hbase-env.sh //加入一下信息, 关闭hbase内置的zookeeper export JAVA_HOME=/usr/java/jdk1.7.0_67 export HBASE_MANAGES_ZK=false mkdir -p /root/hbasedata //不确定是否每个节点都要创建, 我只是测试, 干脆都创建 vim /home/hadoop/hbase/conf/hbase-site.xml //注意这里没有配置zookeeper.znode.parent, //所以spring链接的时候, 应该使用默认的/hbase <configuration> <property> <name>hbase.rootdir</name> <value>hdfs://h1:9000/hbase</value> <description>The directory shared by region servers.</description> </property> <property> <name>hbase.zookeeper.property.clientPort</name> <value>2181</value> <description>Property from ZooKeeper's config zoo.cfg. The port at which the clients will connect.</description> </property> <property> <name>zookeeper.session.timeout</name> <value>120000</value> </property> <property> <!-- 安装zookeeper的节点 --> <name>hbase.zookeeper.quorum</name> <value>h1,h2,h3</value> </property> <property> <name>hbase.tmp.dir</name> <value>/root/hbasedata</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> </configuration> |
一些配置参数的解释
hbase.zookeeper.property.clientPort:指定zk的连接端口
zookeeper.session.timeout:RegionServer与Zookeeper间的连接超时时间。当超时时间到后,ReigonServer会被Zookeeper从RS集群清单中移除,HMaster收到移除通知后,会对这台server负责的regions重新balance,让其他存活的RegionServer接管.
hbase.zookeeper.quorum:默认值是 localhost,列出zookeepr ensemble中的servers
设定regionservers信息, 注意非master节点, 可以保留localhost
1 2 3 |
vim /home/hadoop/hbase/conf/regionservers //录入region节点的hostName h2 h3 |
注意: h1讲作为hbase的主要master节点,没有RegionServers。在h1上删除localhost, 其他regionserver节点加上
2. 分发到其他服务器
1 2 3 4 5 6 7 8 9 |
//每个节点创建文件夹 mkdir -p /root/hbasedata scp -r /home/hadoop/hbase root@192.168.0.62:/home/hadoop/ scp -r /home/hadoop/hbase root@192.168.0.63:/home/hadoop/ su root //到两个节点去处理 chown -R hadoop:hadoop /home/hadoop vim /home/hadoop/hbase/conf/regionservers //分发后没有修改, 就再去修改成上面要求的 |
3. 在master节点启动和关闭, 注意: 这里没有配置master备份服务器
1 2 |
sh /home/hadoop/hbase/bin/start-hbase.sh sh /home/hadoop/hbase/bin/stop-hbase.sh |
4. 验证
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
[root@h1 hbase]# jps 1548 ResourceManager 1821 QuorumPeerMain 5315 HMaster <----多出来的 1283 NameNode [root@h2 hadoop]# jps 1267 SecondaryNameNode 1211 DataNode 2451 HRegionServer <----多出来的 1383 NodeManager 1529 QuorumPeerMain [root@h3 hadoop]# jps 1461 QuorumPeerMain 1207 DataNode 2402 HRegionServer <----多出来的 1317 NodeManager |
可以看到h1出现HMaster, h2,h3出现HRegionServer
5. 测试;
hbase shell, 进入shell环境之后, 测试list, create, put, scan的命令
查找日志等命令:find / -name hbase*.log
显示日志等命令:
1 2 3 4 5 6 7 |
tail -f -n3000 /home/hadoop/hbase/logs/hbase-root-master-h1.log tail -f -n3000 /home/hadoop/hbase/logs/hbase-root-regionserver-h2.log tail -f -n3000 /home/hadoop/hbase/logs/hbase-root-regionserver-h3.log tail -f -n3000 /home/hadoop/hbase/logs/hbase-root-master-h1.out tail -f -n3000 /home/hadoop/hbase/logs/hbase-root-regionserver-h2.out tail -f -n3000 /home/hadoop/hbase/logs/hbase-root-regionserver-h3.out |
问题:
A: Master is initializing, 其他节点日志显示: HRegionServer: error telling master we are up 无效的参数
查看时钟是否能同步: service ntpd stop && ntpdate 192.168.0.61 && service ntpd start
然后检查hosts, 127.0.0.1的映射可能有问题, 要改成:127.0.0.1 localhost localhost.localdomain
清理日志
1 2 3 |
find / -name hbase*.log | xargs rm -rf find / -name hbase*.out | xargs rm -rf find /home/hadoop/* -name *.out | xargs rm -rf |
sqoop 1.4.6安装
传到服务器:
1 |
scp /mnt/E/4_开发软件/Hadoop/安装包/sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz root@192.168.0.61:/home/hadoop/ |
解压:
1 |
tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz && mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha sqoop |
传到服务器:
1 2 |
scp /mnt/E/4_开发软件/Hadoop/安装包/mysql-connector-java-5.1.32-bin.jar root@192.168.0.61:/home/hadoop/sqoop/lib scp /mnt/E/4_开发软件/Hadoop/安装包/postgresql-9.4.1212.jar root@192.168.0.61:/home/hadoop/sqoop/lib |
配置:
1 2 3 4 |
vim /home/hadoop/sqoop/conf/sqoop-env.conf export HADOOP_COMMON_HOME=/home/hadoop/hadoop export HADOOP_MAPRED_HOME=/home/hadoop/hadoop export ZOOCFGDIR=/home/hadoop/zookeeper/conf |
设定环境变量:
1 2 3 4 |
vim /etc/profile export SQOOP_HOME=/home/hadoop/sqoop export PATH=.....:$SQOOP_HOME/bin:${PATH} |
马上生效和测试:
1 2 |
source /etc/profile echo $SQOOP_HOME |
授权:
1 |
chown -R hadoop:hadoop /home/hadoop |
参考: https://www.zybuluo.com/aitanjupt/note/209968
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
//导入到hdfs sqoop import --connect jdbc:mysql://192.168.0.222:3306/pandy_psi --username pandy --password pandy --table ZH5_WIDGET --fields-terminated-by '\t' -m 1 //导入到hbase //先手动建表 create 'ZH5_WIDGET','my_family' //虽然下面有自动建表选项,但不起作用,所以得手动创建表. //然后再导入 //注意: //--split-by WIDGET_ID 以为这个字段来创建hdfs的分块文件标记 //--column-family my_family 这个hbase表的列族 //--hbase-table ZH5_WIDGET 对应这个表 //--hbase-row-key WIDGET_ID 使用这个字段来做rowkey, 多个字段: --hbase-row-key "CREATE_TIME,PUBLISH_TIME,TITLE" //单个字段做rowkey sqoop import --connect jdbc:mysql://192.168.0.222:3306/pandy_psi --username pandy --password pandy --hbase-create-table --split-by WIDGET_ID -m 2 --column-family my_family --query "SELECT * FROM ZH5_WIDGET WHERE 1=1 AND \$CONDITIONS" --hbase-table ZH5_WIDGET --hbase-row-key WIDGET_ID //多个字段做rowkey sqoop import --connect jdbc:mysql://192.168.0.222:3306/pandy_psi --username pandy --password pandy --hbase-create-table --split-by WIDGET_ID -m 2 --column-family my_family --query "SELECT * FROM ZH5_WIDGET WHERE 1=1 AND \$CONDITIONS" --hbase-table ZH5_WIDGET --hbase-row-key "MP4_FILE_ID,CODE,WIDGET_ID,NAME" |