hadoop hdfs ha搭建
一台机子
bin/hdfs zkfc -formatZK
每台namenode
sbin/hadoop-daemon.sh start zkfc
每台journalnode
sbin/hadoop-daemon.sh start journalnode
每台namenode
bin/hdfs namenode -format
sbin/hadoop-daemon.sh start namenode
bin/hdfs namenode -bootstrapStandby
sbin/hadoop-daemon.sh start namenode
如果没有active standy,则zkfc又问题,可以手动hdfs haadmin -transitionToActive hadoop100
主namenode(tolerated volumes不许大于等于data dir)
sbin/hadoop-daemons.sh start datanode
sbin/start-yarn.sh
在备上 修改ha.id
sbin/hadoop-daemon.sh start resourcemanager
基础命令 用户命令和文件命令
1. pwd 当前目录
2. ls -l 列表详细信息 相同与ll
ls -lh 查看文件大小
-rw-r-r-- 1 root root 1508 xxx.c
本用户 本组用户 其他用户 本用户 本组用户 大小 文件名
3. 查看机子内存,cpu,pci
free
cat proc/cpuinfo
lspci -b(可以看出机子是否为虚拟机)
4.配置无密码的ssh通信
ssh-keygen -t rsa -P ""
cat id_rsa.pub >> authorized_keys
ssh localhost
有时需要设置权限700给.ssh 600给authorized_keys
5.linux报错
configure: error: no acceptable C compiler found in $PATH 就是gcc编译器未装
6.更新autoconf包,(生成makefile用)
./configure --prefix=/usr &&
make &&
make install
7.解决问题 sudo
whereis sudoers -------找出文件所在的位置,默认都是/etc/sudoers
chmod u+w /etc/sudoers 以超级用户登录su -root ,修改文件权限即添加
文件拥有这的写权限 限,ls -al /etc/sudoers 可以查看原文件的权限。
vim /etc/sudoers 编辑文件,在root ALL=(ALL)ALL行下添加XXX ALL=(ALL)ALL,
XXX为你的用户名。添加方法:找到root行,按下”i“键进入编辑模式添加即可!编辑
好后esc键进入一般模式,“:wq"保存退出!(空格是\t)
chmod u-w /etc/sudoers 回到文件的原权限!
加入到 /etc/group
8.tar命令
解压文件到指定目录:tar -zxvf /home/zjx/aa.tar.gz -C /home/zjx/pf
9.进入redis命令行
src下边 redis-cli
smembers testSet
10.ps命令,列进程
ps aux | grep "init" 列出所选进程
ps -ef|grep ssh
ps -A
11.netstat -ant|grep 8080 查看8080端口
12.killall -9 pppd 或 kill -9 pid 杀进程
13.rm -rf 目录 f是无询问
14.释放内存
在命令行输入: vi /etc/profile
在里面添加如下内容
export JAVA_HOME=/usr/java/jdk1.6.0_38
export JAVA_BIN=/usr/java/jdk1.6.0_38/bin
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH
4.进入 /usr/bin/目录 cd /usr/bin
ln -s -f /usr/java/jdk1.6.0_02/jre/bin/java
ln -s -f /usr/java/jdk1.6.0_02/bin/javac
复制文件cp /root/hadoop/readme /root/data/readme
18 修改域名解析/etc/hosts
192.168.5.100 master
192.168.5.101 slaver1
192.168.5.102 slaver2
。。。。。。
19 启动redis客户端 ./redis-cli -h 192.168.6.36 -p 19999
可以用它访问twemproxy代理
20 普通用户无法用sbin目录下的命令,是因为$PATH下没有/sbin目录
21 linux 防火墙
1) 重启后生效
开启: chkconfig iptables on
关闭: chkconfig iptables off
2) 即时生效,重启后失效
开启: service iptables start
关闭: service iptables stop
查看:
chkconfig iptables --list 查看防火墙状态
需要说明的是对于Linux下的其它服务都可以用以上命令执行开启和关闭操作。
在开启了防火墙时,做如下设置,开启相关端口,
修改/etc/sysconfig/iptables 文件,添加以下内容:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
21 hadoop 集群环境配置
1.linux 两台 192.168.48.101 master
192.168.48.102 slaver1
2.linux 实现无密码通信 将master的id_rsa.pub 添加到slaver的authorized_keys中
3.linux 安装java (每台机子)
4.hadoop安装
1.在/etc/profile中添加环境变量
PATH添加hadoop的bin目录,添加HADOOP_HOME
2.hadoop-env.sh中配置运行环境
添加export JAVA_HOME=/usr/java/jdk1.6.0_38
3. core-site.xml 中配置hdfs PRC的service的ip:port 和临时目录 以及replication
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/temp</value>
</property>
</configuration>
4.hdfs-site.xml中配置hdfs参数,存储目录,以及relication
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/home/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/hadoop/hdfs/data</value>
</property>
</configuration>
5.mapred-site.xml中配置jobtracker service的ip:port
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
</property>
</configuration>
6.masters文件中配置master ip
7.slavers文件中配置slaver ip
5.copy hadoop的conf到各个机子
22. hive 环境搭建
hive搭建,必须配置的只有在hive-env.sh中的HIVE_HOME=$PWD
配置的时候可能会碰到一些问题,大多都是linux环境中依赖包的版本问题
如:
1.line 179: `if [[ "$HADOOP_VERSION" =~ $hadoop_version_re ]]; then'
在启动hive时,这需要3.1,3.2的bash运行,环境的bash版本太低。可以update bash,或者 直接删除这个判断
2.hive java.io.unixfilesystem.createfileexclusively(native method)
这一般情况下,是文件权限的问题,确定hive用户获得hdfs那些目录的权限,包括log,tmp
hive的其他配置文件:
23.hbase 环境搭建(合并zookeeper)
1.配置
修改配置文件:
hbase-env.sh中添加
export JAVA_HOME=/usr/java/jdk1.6.0_38
在hbase-site.xml中添加
<configuration>
<property>
<name>dfs.support.append</name>
<value>true</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/home/hadoop/hbase/hbase</value>
<!-数据的目录->
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
<!-分布式模式->
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>slaver1</value>
<!--zookeeper集群服务器的位置,多个用逗号slaver1,slaver2->
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/hadoop/hbase/zookeeper</value>
<!-zookeeper的数据目录->
</property>
</configuration>
2.scp到slaver上 (需要放在同目录上)
3.启动服务 bin/start-hbase.sh
4.测试bin/hbase shell
>create 't1'
>list
遇到的问题:
ERROR zookeeper.RecoverableZooKeeper: ZooKeeper exists failed after 3 retries
netstat 查pid kill
netstat -anp | grep 60020 | awk '{print $7}' | cut -d '/' -f1 | xargs kill -9
cpu
在Linux系统中,如何详细了解CPU的信息呢? 当然是通过cat /proc/cpuinfo来检查了,但是比如几个物理CPU/几核/几线程,这些问题怎么确定呢?