`

linux learning 入门,hadoop搭建

阅读更多

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.释放内存

 free -m
 echo 3 > /proc/sys/vm/drop_caches
 cat /proc/sys/vm/drop_caches
free -m
 
 15. ssh拷贝下载文件
上传:
scp /path/file(这部分为本地的路径) user(远端目标用户名)@host(远端目标IP):/pathorfile(文件存储路径)
下载:
scp user(远端用户名)@host(远端IP):/path/file(下载文件在远端的路径) localpathorfile(本地文件存放路径)
查看目录或文件:
ssh user@host command ls "/path/*.tgz"
下载例子:scp root@192.168.6.23:/home/hadoop/hive/hadoop-1.0.1.tar.gz  /root/software
上传例子: scp /root/test.java hadoop@192.168.6.23:/home/hadoop
 
 16.安装jdk
 1下载jdk-6u14-linux-i586-rpm.bin
  2运行./jdk-6u14-linux-i586-rpm.bin
  3java默认会安装在/usr/java下, 
   在命令行输入:  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 
 
 17 移动文件mv /root/hadoop/readme /root/data

      复制文件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/几核/几线程,这些问题怎么确定呢?

经过查看,我的开发机器是1个物理CPU,4核8线程,Intel(R) Core(TM) i7 CPU 860  @ 2.80GHz
记录一下,判断的过程和知识。
 
判断依据:
1.具有相同core id的cpu是同一个core的超线程。
2.具有相同physical id的cpu是同一颗cpu封装的线程或者cores。
英文版:
1.Physical id and core id are not necessarily consecutive but they are unique. Any cpu with the same core id are hyperthreads in the same core.
2.Any cpu with the same physical id are threads or cores in the same physical socket.
 
echo "logical CPU number:"
#逻辑CPU个数
cat /proc/cpuinfo | grep "processor" | wc -l
 
echo "physical CPU number:"
#物理CPU个数:
cat /proc/cpuinfo | grep "physical id" | sort -u | wc -l
 
echo "core number in a physical CPU:"
#每个物理CPU中Core的个数:
cat /proc/cpuinfo | grep "cpu cores" | uniq | awk -F: '{print $2}'
#查看core id的数量,即为所有物理CPU上的core的个数
cat /proc/cpuinfo | grep "core id" | uniq |  wc -l
 
#是否为超线程?
#如果有两个逻辑CPU具有相同的”core id”,那么超线程是打开的。或者siblings数目比cpu cores数目大。
#每个物理CPU中逻辑CPU(可能是core, threads或both)的个数:
cat /proc/cpuinfo | grep "siblings"
 
 
/proc/cpuinfo 文件包含系统上每个处理器的数据段落。/proc/cpuinfo 描述中有 6 个条目适用于多内核和超线程(HT)技术检查:processor, vendor id, physical id, siblings, core id 和 cpu cores。
processor 条目包括这一逻辑处理器的唯一标识符。
physical id 条目包括每个物理封装的唯一标识符。
core id 条目保存每个内核的唯一标识符。
siblings 条目列出了位于相同物理封装中的逻辑处理器的数量。
cpu cores 条目包含位于相同物理封装中的内核数量。
如果处理器为英特尔处理器,则 vendor id 条目中的字符串是 GenuineIntel。
 
1.拥有相同 physical id 的所有逻辑处理器共享同一个物理插座。每个 physical id 代表一个唯一的物理封装。
2.Siblings 表示位于这一物理封装上的逻辑处理器的数量。它们可能支持也可能不支持超线程(HT)技术。
3.每个 core id 均代表一个唯一的处理器内核。所有带有相同 core id 的逻辑处理器均位于同一个处理器内核上。
4.如果有一个以上逻辑处理器拥有相同的 core id 和 physical id,则说明系统支持超线程(HT)技术。
5.如果有两个或两个以上的逻辑处理器拥有相同的 physical id,但是 core id 不同,则说明这是一个多内核处理器。cpu cores 条目也可以表示是否支持多内核。
 
判断CPU是否64位,检查cpuinfo中的flags区段,看是否有lm标识。
Are the processors 64-bit?   
A 64-bit processor will have lm ("long mode") in the flags section of cpuinfo. A 32-bit processor will not.
 
linux shell vi
:n,$s/aaaa/bbbb/
 
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics