1 linux修改系统日期与时间
date -s "2012-11-03 10:25:25"
2 windows下 hadoop 8088 端口不能看log的问题
进入C:\Windows\System32\drivers\etc 目录下编辑hosts目录
同一个地址可以起两个别名,但是不能写两个同样的IP地址
配置成功后可以在cmd中直接ping master…
192.168.137.121 master master
192.168.137.122 slaver1 slaver1
192.168.137.123 slaver2 slaver2
192.168.137.127 slaver3 slaver3
3 windows下 hadoop 8088 端口不能看history日志文件的问题
[root@master sbin]# pwd
/usr/hadoop-2.6.4/sbin
[root@master sbin]# mr-jobhistory-daemon.sh start historyserver
[root@master sbin]# jps
3849 NameNode
4172 ResourceManager
4029 SecondaryNameNode
5427 Jps
5357 JobHistoryServer
4 windows下 ping命令不是内部命令,系统环境变量Path需添加
C:\windows\system32\
5 开机自启动或者关闭服务(开机关闭防火墙)
chkconfig iptables off
6 查看系统服务命令
ls -a /etc/init.d/
7 杀掉进程,hiveserver2 启动两次会导致beenline
jps
kill -9 6829
kill -l
8 hive2.1.1版本或者之上需要使用jdk1.8或之上的版本进行兼容,否则会造成运行hql是经常报outofmemory
错误
9 hbase 查操作命令
启动hbase:hbase shell
help 'create'
help 'put'
help 'get'
help 'alter'
10 安装phoneix 运行sqlline.py master,slaver1,slave2:2181 报错 : No module named argparse
Traceback (most recent call last):
File "/usr/tools/apache-phoenix-4.11.0-HBase-1.2-bin/bin/sqlline.py", line 27, in <module>
import argparse
ImportError: No module named argparse
这是因为安装新版本的phoenix
自带sqlline
需要argparse
模块,我们centos6.5
中的python
不包括这个模块。需要额外安装,我们使用easy_install
工具安装argparse
模块比较简洁,类似npm
#wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py
#python ez_setup.py
#easy_install argparse
11 scala project with maven
Creating Your First scala Project with maven
如下图 add aracheType Choose net.alchim31.maven:scala-archetype-simple version:1.5
填好gav自动下载
修改scala版本号
<properties>
<maven.compiler.source>1.6</maven.compiler.source>
<maven.compiler.target>1.6</maven.compiler.target>
<encoding>UTF-8</encoding>
<scala.tools.version>2.11</scala.tools.version>
<scala.version>2.11.11</scala.version>
</properties>
删除不用的单元测试依赖
<dependency>
<groupId>org.specs2</groupId>
<artifactId>specs2_${scala.tools.version}</artifactId>
<version>1.13</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.scalatest</groupId>
<artifactId>scalatest_${scala.tools.version}</artifactId>
<version>2.0.M6-SNAP8</version>
<scope>test</scope>
</dependency>
删除插件编译参数
<arg>-make:transitive</arg>
#### 12 spark-shell 的使用
spark-shell 是一个命令行交互工具(需要安装好spark环境),在里面可以快速查看处理结果,下面有一个需求就查询ID为10的同学的信息
[root@master Desktop]# cat student.txt
01 赵小六 1990-09-01 03:18:03.0 男
02 钱钟书 1916-12-21 00:00:00.0 男
03 孙菲菲 1990-05-20 00:00:00.0 男
04 李彦伟 1990-08-06 00:00:00.0 男
05 周佛海 1900-12-01 00:00:00.0 女
06 吴天 1992-03-01 00:00:00.0 女
07 郑板桥 1989-07-01 00:00:00.0 女
08 王菊 1990-01-20 00:00:00.0 女
09 张凯 1983-08-01 20:10:21.0 男
10 李云 1989-05-19 11:07:30.0 男
11 张凯 1997-06-12 11:47:23.0 男
12 张凯 1997-06-16 11:47:23.0 女
13 张海洋 1989-05-14 11:07:30.0 男
进入环境
[root@master ~]# spark-shell
生成rdd
scala> val sturdd =sc.textFile("file:///root/Desktop/student.txt")
过滤
scala> sturdd.filter(x=>x.split("\t")(0).toString.equals("10")).foreach(println)
10 李云 1989-05-19 11:07:30.0 男
#### 13【hadoop】 running beyond virtual memory错误原因及解决办法
问题描述:
在hadoop中运行应用,出现了running beyond virtual memory错误。提示如下:
Container [pid=28920,containerID=container_1389136889967_0001_01_000121] is running beyond virtual memory limits. Current usage: 1.2 GB of 1 GB physical memory used; 2.2 GB of 2.1 GB virtual memory used. Killing container.
原因:从机上运行的Container试图使用过多的内存,而被NodeManager kill掉了。
[摘录] The NodeManager is killing your container. It sounds like you are trying to use hadoop streaming which is running as a child process of the map-reduce task. The NodeManager monitors the entire process tree of the task and if it eats up more memory than the maximum set in mapreduce.map.memory.mb or mapreduce.reduce.memory.mb respectively, we would expect the Nodemanager to kill the task, otherwise your task is stealing memory belonging to other containers, which you don't want.
解决方法:
mapred-site.xml中设置map和reduce任务的内存配置如下:(value中实际配置的内存需要根据自己机器内存大小及应用情况进行修改)
<property>
<name>mapreduce.map.memory.mb</name>
<value>1536</value>
</property>
<property>
<name>mapreduce.map.java.opts</name>
<value>-Xmx1024M</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>3072</value>
</property>
<property>
<name>mapreduce.reduce.java.opts</name>
<value>-Xmx2560M</value>
</property>
如果你没有权限重启hadoop可以在运行MR的时候设置configuration
conf.set("mapreduce.map.memory.mb", "1536");
conf.set("mapreduce.reduce.memory.mb", "3072");
conf.set("mapreduce.map.java.opts", "-Xmx1024m");
conf.set("mapreduce.reduce.java.opts", "-Xmx2560m");
附录:
[Container is running beyond memory limits](
http://stackoverflow.com/questions/21005643/container-is-running-beyond-memory-limits)
#### 14 Out of memory error in Mapreduce shuffle phase
必须满足条件 percent * parallelcopies <= 1 ,下面的设置将会报错
mapreduce.reduce.shuffle.input.buffer.percent = 0.7
mapreduce.reduce.shuffle.memory.limit.percent = 0.25
mapreduce.reduce.shuffle.parallelcopies = 5
15 eclipse 链接 hbase 查询数据卡死
卡死的位置如下所示,断点调试是发现数据是卡死在Result result = table.get(get);最终发现是windows上的hosts配置需要跟大数据环境的hosts配置相一致,否则就会导致无法查询,一直在连接,从来啊没有连接上
,连接上会有一个Connecting to slaver2/192.168.137.120:16020 …的提示
2017-11-16 18:40:02.008 [INFO ] [org.apache.zookeeper.Environment.logEnv(Environment.java:100)] Client environment:java.io.tmpdir=C:\Users\ZHAOZH~1\AppData\Local\Temp\
2017-11-16 18:40:02.008 [INFO ] [org.apache.zookeeper.Environment.logEnv(Environment.java:100)] Client environment:java.compiler=<NA>
2017-11-16 18:40:02.008 [INFO ] [org.apache.zookeeper.Environment.logEnv(Environment.java:100)] Client environment:os.name=Windows 10
2017-11-16 18:40:02.008 [INFO ] [org.apache.zookeeper.Environment.logEnv(Environment.java:100)] Client environment:os.arch=amd64
2017-11-16 18:40:02.008 [INFO ] [org.apache.zookeeper.Environment.logEnv(Environment.java:100)] Client environment:os.version=10.0
2017-11-16 18:40:02.009 [INFO ] [org.apache.zookeeper.Environment.logEnv(Environment.java:100)] Client environment:user.name=zhaozhifei
2017-11-16 18:40:02.011 [INFO ] [org.apache.zookeeper.Environment.logEnv(Environment.java:100)] Client environment:user.home=C:\Users\zhaozhifei
2017-11-16 18:40:02.011 [INFO ] [org.apache.zookeeper.Environment.logEnv(Environment.java:100)] Client environment:user.dir=E:\MyWorkSpace\hadoopProjects\hbaseapi
2017-11-16 18:40:02.012 [INFO ] [org.apache.zookeeper.ZooKeeper.<init>(ZooKeeper.java:438)] Initiating client connection, connectString=192.168.137.118:2181,192.168.137.119:2181,192.168.137.120:2181 sessionTimeout=90000 watcher=hconnection-0x4387b79e0x0, quorum=192.168.137.118:2181,192.168.137.119:2181,192.168.137.120:2181, baseZNode=/hbase
2017-11-16 18:40:02.014 [DEBUG] [org.apache.zookeeper.ClientCnxn.<clinit>(ClientCnxn.java:102)] zookeeper.disableAutoWatchReset is false
16 CentOS 7 防火墙设置
查看防火墙状态
$ systemctl status firewalld
$ service firewalld status
关闭防火墙
$ sudo systemctl stop firewalld
$ sudo service firewalld stop
Redirecting to /bin/systemctl stop firewalld.service
启用防火墙
$ sudo systemctl start firewalld
$ sudo service firewalld start
Redirecting to /bin/systemctl start firewalld.service
开机启用防火墙
$ sudo systemctl enable firewalld
开机不启用防火墙
$ sudo systemctl disable firewalld
对外开启 80、8080 端口: 只有开启防火墙才可以设置
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=8080/tcp
How to Stop and Disable Firewalld on CentOS 7
How to Start and Enable Firewalld on CentOS 7
How To: Disable Firewall on RHEL / CentOS / RedHat Linux
17 window上编写的shell脚本,linux无法执行的问题
关于回车与换行的由来
很久以前,老式的电传打字机使用两个字符来另起新行。一个字符把滑动架移回首位 (称为回车,ASCII码为0D),另一个字符把纸上移一行 (称为换行,ASCII码为0A)。当计算机问世以后,存储器曾经非常昂贵。有些人就认定没必要用两个字符来表示行尾。UNIX 开发者决定他们可以用一个字符来表示行尾,Linux沿袭Unix,也是。Apple 开发者规定了用.开发 MS-DOS以及Windows 的那些家伙则决定沿用老式的.
三种行尾格式如下:
unix : n
dos : rn
mac : r
这意味着,如果你试图把一个文件从一种系统移到另一种系统,那么你就有换行符方面的麻烦。
因为MS-DOS及Windows是回车+换行来表示换行,因此在Linux下用Vim查看在Windows下写的代码,行尾后^M
符号。详见Windows & Linux 文件格式之迷 < VI下删除文本中的^M>
解决方法
* vim -b filename
这样就能看到行尾的^M
符号了,然后移动到行尾
* 在vim中利用替换功能就可以将^M
都删掉,键入如下替换命令行:%s/^M//g
* 注意:上述命令行中的^M
符,不是^
再加上M
,而是由Ctrl+v
、Ctrl+M
键生成的,或者Ctrl+v
,再按回车
18 关于本地代码调试服务无法连接的问题
如果想在本地运行则必须设置bootstrap.servers
与kafka
集群设置的地址是相同的,即ip
与hostname
不能完全等价,win host
要进行配置,目前发现hbase
,测试环境ok,线上集群报错,等问题,均由此问题导致。特此铭记
19 hdfs块丢失导致的异常问题排查解决
问题描述:由于不小心误删了hdfs的元数据目录,导致hdfs的块丢失;hdfs namenode自动进入 safe mode,hbase也一直报错找不到hbase.version文件,导致master挂掉;
* 首先退出hdfs namenode safe modehadoop dfsadmin -safemode leave
- 修复hdfs丢失的块
hadoop fsck /
;hdfs fsck / -delete
//此方式会将丢失的块全部删除 - hbase修复
hbase hbck -fixVersionFile
如果hbase还有org.apache.hadoop.hbase.TableExistsException: hbase:namespace 异常
解决方案:
* 切换到zookeeper的bin目录;
执行$
sh zkCli.sh
输入
ls /
输入
rmr /hbase
退出重启即可
19 hdfs清空回收站
查询垃圾回收站数据
hdfs dfs -du -h
清空回收站
hdfs dfs -expunge