
Hadoop
HDFS常用的一些命令
大数据 being 发表了文章 0 个评论 956 次浏览 2017-07-07 14:52
一、文件操作
1、列出HDFS下的文件
/usr/local/hadoop/bin/hadoop dfs -ls2、列出HDFS文件下名为in的文档中的文件
/usr/local/hadoop/bin/hadoop dfs -ls in3、上传文件
将hadoop目录下的test1文件上传到HDFS上并重命名为test
/usr/local/hadoop/bin/hadoop dfs -put test1 test4、文件被复制到本地系统中
将HDFS中的in文件复制到本地系统并命名为getin:
/usr/local/hadoop/bin/hadoop dfs -get in getin5、删除文档
删除HDFS下名为out的文档:
/usr/local/hadoop/bin/hadoop dfs -rmr out6、查看文件
查看HDFS下in文件中的内容:
/usr/local/hadoop/bin/hadoop dfs -cat in/*7、建立目录
/usr/local/hadoop/bin/hadoop dfs -mkdir /user/hadoop/examples(目录/目录名)只能一级一级的建目录。
8、复制文件
/usr/local/hadoop/bin/hadoop dfs -copyFromLocal 源路径 路径9、通过Hadoop命令把两个文件的内容合并起来
hdfs dfs -getmerge 位于hdfs中的原文件(里面有多个文件) 合并后的文件名注:合并后的文件位于当前目录,不在hdfs中,是本地文件.
例如:
hdfs dfs -getmerge hdfs://Master:9000/data/SogouResult.txt CombinedResult
二、管理与更新
1、执行基本信息
查看HDFS的基本统计信息:
/usr/local/hadoop/bin/hadoop dfsadmin -report2、退出安全模式
NameNode在启动时会自动进入安全模式。安全模式是NameNode的一种状态,在这个阶段,文件系统不允许有任何修改。
系统显示Name node in safe mode,说明系统正处于安全模式,这时只需要等待十几秒即可,也可通过下面的命令退出安全模式:
/usr/local/hadoop/bin/hadoop dfsadmin -safemode leave3、进入安全模式
在必要情况下,可以通过以下命令把HDFS置于安全模式:
/usr/local/hadoop/bin/hadoop dfsadmin -safemode enter4、节点添加
添加一个新的DataNode节点,先在新加节点上安装好Hadoop,要和NameNode使用相同的配置(可以直接从NameNode复制),修改$HADOOP_HOME/conf/master文件,加入NameNode主机名。然后在NameNode节点上修改$HADOOP_HOME/conf/slaves文件,加入新节点名,再建立新加节点无密码的SSH连接,运行启动命令为:
/usr/local/hadoop/bin/start-all.sh5、负载均衡
HDFS的数据在各个DataNode中的分布可能很不均匀,尤其是在DataNode节点出现故障或新增DataNode节点时。新增数据块时NameNode对DataNode节点的选择策略也有可能导致数据块分布不均匀。用户可以使用命令重新平衡DataNode上的数据块的分布:
/usr/local/hadoop/bin/start-balancer.sh
CDH Hadoop + HBase HA 部署详解
大数据 空心菜 发表了文章 0 个评论 4792 次浏览 2016-11-07 21:07
CDH 的部署和 Apache Hadoop 的部署是没有任何区别的。这里着重的是 HA的部署,需要特殊说明的是NameNode HA 需要依赖 Zookeeper
准备
Hosts文件配置:
cat > /etc/hosts << _HOSTS_各个节点服务情况
127.0.0.1 localhost
10.0.2.59 cdh-m1
10.0.2.60 cdh-m2
10.0.2.61 cdh-s1
_HOSTS_
cdh-m1 Zookeeper JournalNode NameNode DFSZKFailoverController HMaster对几个新服务说明下:
cdh-m2 Zookeeper JournalNode NameNode DFSZKFailoverController HMaster
cdh-s1 Zookeeper JournalNode DataNode HRegionServer
- JournalNode 用于同步 NameNode 元数据,和 Zookeeper 一样需要 2N+1个节点存活集群才可用。
- DFSZKFailoverController(ZKFC) 用于主备切换,类似 Keepalived 所扮演的角色。
NTP 服务
设置时区
rm -f /etc/localtime配置NTP Server
ln -s /usr/share/zoneinfo/UTC /etc/localtime
yum install -y ntp启动并设置开机自启动
cat > /etc/ntp.conf << _NTP_
driftfile /var/lib/ntp/drift
restrict default nomodify
restrict -6 default nomodify
server cn.ntp.org.cn prefer
server news.neu.edu.cn iburst
server dns.sjtu.edu.cn iburst
server 127.127.1.1 iburst
tinker dispersion 100
tinker step 1800
tinker stepout 3600
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
_NTP_
# NTP启动时立即同步
cat >> /etc/ntp/step-tickers << _NTP_
server cn.ntp.org.cn prefer
server news.neu.edu.cn iburst
server dns.sjtu.edu.cn iburst
_NTP_
# 同步硬件时钟
cat >> /etc/sysconfig/ntpd << _NTPHW_
SYNC_HWCLOCK=yes
_NTPHW_
/etc/init.d/ntpd start配置 NTP Client
chkconfig ntpd on
yum install -y ntp启动并设置开机自启动
# 注意修改内网NTP Server地址
cat > /etc/ntp.conf << _NTP_
driftfile /var/lib/ntp/drift
restrict default nomodify
restrict -6 default nomodify
restrict 127.0.0.1
restrict -6 ::1
server 10.0.2.59 prefer
tinker dispersion 100
tinker step 1800
tinker stepout 3600
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
_NTP_
# NTP启动时立即同步
cat >> /etc/ntp/step-tickers << _NTP_
server 10.0.2.59 prefer
_NTP_
# 同步硬件时钟
cat >> /etc/sysconfig/ntpd << _NTPHW_
SYNC_HWCLOCK=yes
_NTPHW_
/etc/init.d/ntpd start检查 NTP 同步
chkconfig ntpd on
ntpq -pJDK
# 结果
remote refid st t when poll reach delay offset jitter
==============================================================================
*time7.aliyun.co 10.137.38.86 2 u 17 64 3 44.995 5.178 0.177
news.neu.edu.cn .INIT. 16 u - 64 0 0.000 0.000 0.000
202.120.2.90 .INIT. 16 u - 64 0 0.000 0.000 0.000
创建目录
mkdir -p /data/{install,app,logs,pid,appData}
mkdir /data/appData/tmp
cd /data/install
wget -c http://oracle.com/jdk-7u51-linux-x64.gz
tar xf jdk-7u51-linux-x64.gz -C /data/app
cd /data/app
ln -s jdk1.7.0_51 jdk1.7
cat >> /etc/profile << _PATH_
export JAVA_HOME=/data/app/jdk1.7
export CLASSPATH=.:\$JAVA_HOME/lib/dt.jar:\$JAVA_HOME/lib/tools.jar
export PATH=\$JAVA_HOME/bin:\$PATH
_PATH_
source /etc/profile
创建运行账户
useradd -u 600 run安装包
http://archive.cloudera.com/cdh5/cdh/5/
cd /data/install
wget -c http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.4.5.tar.gz
wget -c http://archive.apache.org/dist/zookeeper/zookeeper-3.4.5/zookeeper-3.4.5.tar.gz
wget -c http://archive.cloudera.com/cdh5/cdh/5/hbase-1.0.0-cdh5.4.5.tar.gz
安装 Zookeeper
cd /data/install设置环境变量
tar xf zookeeper-3.4.5.tar.gz -C /data/app
cd /data/app
ln -s zookeeper-3.4.5 zookeeper
sed -i '/^export PATH=/i\export ZOOKEEPER_HOME=/data/app/zookeeper' /etc/profile删除无用文件
sed -i 's#export PATH=#&\$ZOOKEEPER_HOME/bin:#' /etc/profile
source /etc/profile
cd $ZOOKEEPER_HOME创建数据目录
rm -rf *xml *txt zookeeper-3.4.5.jar.* src recipes docs dist-maven contrib
rm -f $ZOOKEEPER_HOME/bin/*.cmd $ZOOKEEPER_HOME/bin/*.txt
rm -f $ZOOKEEPER_HOME/conf/zoo_sample.cfg
mkdir -p /data/appData/zookeeper/{data,logs}配置
cat > $ZOOKEEPER_HOME/conf/zoo.cfg << _ZOO_修改Zookeeper的日志打印方式,与日志路径设置
tickTime=2000
initLimit=10
syncLimit=5
clientPort=2181
dataDir=/data/appData/zookeeper/data
dataLogDir=/data/appData/zookeeper/logs
server.1=cdh-m1:2888:3888
server.2=cdh-m2:2888:3888
server.3=cdh-s1:2888:3888
_ZOO_
编辑
$ZOOKEEPER_HOME/bin/zkEnv.sh在27行后加入两个变量
ZOO_LOG_DIR=/data/logs/zookeeper创建 myid文件
ZOO_LOG4J_PROP="INFO,ROLLINGFILE"
# 注意myid与配置文件保持一致设置目录权限
echo 1 >/data/appData/zookeeper/data/myid
chown -R run.run /data/{app,appData,logs}启动、停止
# 启动
runuser - run -c 'zkServer.sh start'
# 停止
runuser - run -c 'zkServer.sh stop'
安装 Hadoop
tar xf hadoop-2.6.0-cdh5.4.5.tar.gz -C /data/app设置环境变量
cd /data/app
ln -s hadoop-2.6.0-cdh5.4.5 hadoop
sed -i '/^export PATH=/i\export HADOOP_HOME=/data/app/hadoop' /etc/profile删除无用文件
sed -i 's#export PATH=#&\$HADOOP_HOME/bin:\$HADOOP_HOME/sbin:#' /etc/profile
source /etc/profile
cd $HADOOP_HOME新建数据目录
rm -rf *txt share/doc src examples* include bin-mapreduce1 cloudera
find . -name "*.cmd"|xargs rm -f
mkdir -p /data/appData/hdfs/{name,edits,data,jn,tmp}配置
切换到配置文件目录
cd $HADOOP_HOME/etc/hadoop编辑 core-site.xml
编辑 hdfs-site.xml
fs.defaultFS
hdfs://hdfs-cdh
hadoop.tmp.dir
/data/appData/hdfs/tmp
fs.trash.interval
1440
io.file.buffer.size
131072
io.compression.codecs
org.apache.hadoop.io.compress.SnappyCodec
小于5个DataNode建议添加如下配置
dfs.nameservices
hdfs-cdh
ha.zookeeper.quorum
cdh-m1:2181,cdh-m2:2181,cdh-s1:2181
dfs.ha.namenodes.hdfs-cdh
nn1,nn2
dfs.namenode.rpc-address.hdfs-cdh.nn1
cdh-m1:9000
dfs.namenode.http-address.hdfs-cdh.nn1
cdh-m1:50070
dfs.namenode.rpc-address.hdfs-cdh.nn2
cdh-m2:9000
dfs.namenode.http-address.hdfs-cdh.nn2
cdh-m2:50070
dfs.namenode.shared.edits.dir
qjournal://cdh-m1:8485;cdh-m2:8485;cdh-s1:8485;/hdfs-cdh
dfs.ha.automatic-failover.enabled
true
dfs.client.failover.proxy.provider.hdfs-cdh
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
dfs.ha.fencing.methods
sshfence
shell(/bin/true)
dfs.ha.fencing.ssh.private-key-files
/home/run/.ssh/id_rsa
dfs.ha.fencing.ssh.connect-timeout
50000
dfs.namenode.name.dir
/data/appData/hdfs/name
dfs.datanode.data.dir
/data/appData/hdfs/data
dfs.journalnode.edits.dir
/data/appData/hdfs/jn
dfs.namenode.edits.noeditlogchannelflush
true
dfs.namenode.edits.dir
/data/appData/hdfs/edits
dfs.datanode.hdfs-blocks-metadata.enabled
true
dfs.permissions.enabled
false
dfs.blocksize
64m
在 hadoop-env.sh 中添加如下变量
dfs.replication
2
dfs.client.block.write.replace-datanode-on-failure.policy
NEVER
export JAVA_HOME=/data/app/jdk1.7Heap 设置,单位 MB
export HADOOP_LOG_DIR=/data/logs/hadoop
export HADOOP_PID_DIR=/data/pid
# SSH端口 可选
export HADOOP_SSH_OPTS="-p 36000"
export HADOOP_HEAPSIZE=1024权限设置
chown -R run.run /data/{app,appData,logs}格式化
chmod 777 /data/pid
格式化只需要执行一次,格式化之前启动Zookeeper
切换用户
su - run启动所有 JournalNode
hadoop-daemon.sh start journalnode格式化 Zookeeper(为 ZKFC 创建znode)
hdfs zkfc -formatZKNameNode 主节点格式化并启动
hdfs namenode -formatNameNode 备节点同步数据并启动
hadoop-daemon.sh start namenode
hdfs namenode -bootstrapStandby启动 ZKFC
hadoop-daemon.sh start namenode
hadoop-daemon.sh start zkfc启动 DataNode
hadoop-daemon.sh start datanode启动与停止
切换用户
su - run集群批量启动
需要配置运行用户ssh-key免密码登录,与$HADOOP_HOME/etc/hadoop/slaves
# 启动单服务启动停止
start-dfs.sh
# 停止
stop-dfs.sh
启动HDFS
hadoop-daemon.sh start journalnode停止HDFS
hadoop-daemon.sh start namenode
hadoop-daemon.sh start zkfc
hadoop-daemon.sh start datanode
hadoop-daemon.sh stop datanode
hadoop-daemon.sh stop namenode
hadoop-daemon.sh stop journalnode
hadoop-daemon.sh stop zkfc
测试
HDFS HA 测试
打开 NameNode 状态页:
http://cdh-m1:50010
http://cdh-m2:50010
在 Overview 后面能看见 active 或 standby,active 为当前 Master,停止 active 上的 NameNode,检查 standby是否为 active。
HDFS 测试
hadoop fs -mkdir /test结果:
hadoop fs -put /etc/hosts /test
hadoop fs -ls /test
-rw-r--r-- 2 java supergroup 89 2016-06-15 10:30 /test/hostsHDFS 管理命令
# 其中权限后面的列(这里的2)代表文件总数,即副本数量。
# 动态加载 hdfs-site.xml
hadoop dfsadmin -refreshNodes
HBase安装配置
cd /data/install设置环境变量
tar xf hbase-1.0.0-cdh5.4.5.tar.gz -C /data/app
cd /data/app
ln -s hbase-1.0.0-cdh5.4.5 hbase
sed -i '/^export PATH=/i\export HBASE_HOME=/data/app/hbase' /etc/profile删除无用文件
sed -i 's#export PATH=#&\$HBASE_HOME/bin:#' /etc/profile
source /etc/profile
cd $HBASE_HOME配置
rm -rf *.txt pom.xml src docs cloudera dev-support hbase-annotations hbase-assembly hbase-checkstyle hbase-client hbase-common hbase-examples hbase-hadoop2-compat hbase-hadoop-compat hbase-it hbase-prefix-tree hbase-protocol hbase-rest hbase-server hbase-shell hbase-testing-util hbase-thrift
find . -name "*.cmd"|xargs rm -f
进入配置文件目录
cd $HBASE_HOME/conf编辑 hbase-site.xml
在 hbase-env.sh 中添加如下变量
hbase.rootdir
hdfs://hdfs-cdh/hbase
hbase.cluster.distributed
true
hbase.master
cdh-m1:60000,cdh-m2:60000
hbase.zookeeper.quorum
cdh-m1:2181,cdh-m2:2181,cdh-s1:2181
zookeeper.znode.parent
/hbase
hbase.coprocessor.user.region.classes
org.apache.hadoop.hbase.coprocessor.AggregateImplementation
export JAVA_HOME=/data/app/jdk1.7Heap 设置,单位 MB
export HBASE_LOG_DIR=/data/logs/hbase
export HBASE_PID_DIR=/data/pid
export HBASE_MANAGES_ZK=false
# SSH 默认端口 可选
export HBASE_SSH_OPTS="-o ConnectTimeout=1 -p 36000"
export HBASE_HEAPSIZE=1024可选设置 regionservers 中添加所有RegionServer主机名,用于集群批量启动、停止
启动与停止
切换用户
su - run集群批量启动
需要配置运行用户ssh-key免密码登录,与$HBASE_HOME/conf/regionservers
# 启动单服务启动停止
start-hbase.sh
# 停止
stop-hbase.sh
HMaster
# 启动HRegionServer
hbase-daemon.sh start master
# 停止
hbase-daemon.sh stop master
# 启动
hbase-daemon.sh start regionserver
# 停止
hbase-daemon.sh stop regionserver
测试
HBase HA 测试
浏览器打开两个HMaster状态页:
http://cdh-m1:60010
http://cdh-m2:60010
可以在Master后面看见其中一个主机名,Backup Masters中看见另一个。
停止当前Master,刷新另一个HMaster状态页会发现Master后面已经切换,HA成功。
HBase 测试
进入hbase shell 执行:
create 'users','user_id','address','info'清除测试数据:
list
put 'users','anton','info:age','24'
get 'users','anton'
# 最终结果
COLUMN CELL
info:age timestamp=1465972035945, value=24
1 row(s) in 0.0170 seconds
disable 'users'到这里安装就全部完成,不懂的地方可以留言交流!
drop 'users'
Hbase shell常用命令小记
大数据 空心菜 发表了文章 0 个评论 1900 次浏览 2016-09-13 00:19
$HBASE_HOME/bin/hbase shell
如果有kerberos认证,需要事先使用相应的keytab进行一下认证(使用kinit命令),认证成功之后再使用hbase shell进入可以使用whoami命令可查看当前用户
hbase(main):002:0> whoami
2016-09-12 13:09:42,440 WARN [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
root (auth:SIMPLE)
groups: root
2、表的管理
1)查看有哪些表
hbase(main):001:0> list2)创建表
TABLE
pythonTrace
1 row(s) in 0.1320 seconds
语法:create