通过CentOS 7从零开始学习Linux及常见问题

本文将通过CentOS 7来学习Linux的以下常用知识:

  • Linux网络设置
  • SSH常用配置和使用方法
  • Linux常用服务
    • Crontab定时任务
    • NTP时间同步
    • Logrotate日志切割
    • Supervisor进程管理
  • Linux常用命令
  • Linux中的防火墙配置方法
  • 使用Apache配置Web服务器
  • 使用Nginx配置Web服务器
  • MySQL的安装及常用操作
  • Linux中的常见问题
  • Memcached和Redis缓存
  • Git的配置和使用
  • PHP安装及配置
    • Lavarel的安装及配置
    • Yii的安装及配置
    • ThinkPHP的安装及配置
    • phpMyAdmin的安装及配置
    • phpRedisAdmin的安装及配置
  • Java环境搭建
    • Tomcat搭建和启用
    • Maven使用示例
  • Python运行环境配置
  • Zabbix监控系统安装配置
  • VirtualBox 设置共享文件夹

CentOS 7目录结构

Read More

【大数据基础】Hadoop集群环境伪分布式配置

本文使用环境为在VirtualBox上安装的CentOS虚拟机。这个安装部分比较简单,不再赘述,对这块不太熟悉的话可以参考【大数据基础】VirtualBox安装CentOS实操,考虑到生产环境多采用64位,本文中也使用64位的系统进行安装。

一、准备工作

在进入前需先做好网络配置,这部分在【大数据基础】VirtualBox安装CentOS实操中也做了介绍。接着需要做的是关闭防火墙,直接输入service iptables stop即可关闭防火墙,但这在重启后就会失效,要设置开机关闭防火墙请在命令行中输入chkconfig iptables off。
chkconfig iptables –list可以查看防火墙开机关闭状态,service iptables status可查看当前防火墙状态。
Linux iptables关闭方法

输入useradd hadoop添加用户hadoop,passwd hadoop两次输入密码来设置hadoop用户密码

Linux添加用户hadoop

二、安装JDK

安装方法一

可以去Oracle官网下载JDK然后上传到虚拟机上,对于可以上网的机器也可以直接通过wget命令下载到服务器上(未安装wget在命令行运行yum install wget -y来进行安装)。

然后为方便管理在/usr目录下创建一个java目录(),将所下载的JDK包直接解到到/usr/java目录

wget http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jdk-8u66-linux-x64.tar.gz
mkdir /usr/java
tar -xzvf jdk-8u66-linux-x64.tar.gz -C /usr/java/

安装方法二

除了通过tar包安装外还可以下载rpm包来完成安装,方法相似

wget http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jdk-8u66-linux-x64.rpm
rpm -ivh jdk-8u66-linux-x64.rpm

配置环境变量

要方便地使用Java就必须要配置环境变量,我们在/etc/profile文件的最后添加如下配置

export JAVA_HOME=/usr/java/jdk1.8.0_66
export PATH=$JAVA_HOME/bin:$PATH

然后输入source /etc/profile在应用刚刚设置的配置,此时在命令行中输入echo $PATH就会发现/usr/java/jdk1.8.0_66/bin已经被添加到了环境变量中,可以在命令行中输入java -version查看版本号来进行验证。

三、安装Hadoop

我们将使用前面创建的hadoop用户来安装Hadoop,执行su – hadoop切换到hadoop用户,然后上传Hadoop安装包或在虚拟机上直接下载Hadoop安装包,然后将安装包解压到hadoop用户的根目录下(/home/hadoop)

root@hadoop01 ~]# su - hadoop
[hadoop@hadoop01 ~]$ wget http://apache.opencas.org/hadoop/common/hadoop-2.6.0/hadoop-2.6.0.tar.gz
tar -xzvf hadoop-2.6.0.tar.gz 

免登录配置

为方便Hadoop在本地的使用乃至今后管理Hadoop集群,我们会生成一对密钥来实现免登录。在命令行键入ssh-keygen -t rsa并连续4次回车生成密钥(其中的rsa代表加密类型),其中id_rsa文件为私钥,id_rsa.pub文件为公钥(两个文件都在用户根目录的.ssh目录下)。

免登录生成公钥和私钥

实现免登录的原理实际上就是把公钥内容添加到所需免密码登录的主机的authorized_keys文件中,可以使用cat命令也可以使用专用的”ssh-copy-id -i 主机名或ip”来进行配置。当前我们采用伪分布式配置Hadoop,所以配置在本机上

ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
#上面的命令也可以使用ssh-copy-id -i localhost
chmod 0600 ~/.ssh/authorized_keys

此时发现已由之前ssh localhost需要输入密码变为免密码登录了(第一次登录需要输入设置为安全主机)
免密码登录本机

Hadoop配置文件

光解压Hadoop压缩包还未完成Hadoop的安装,需要修改的主要有以下5个配置文件,这几个文件都在hadoop安装包的etc/hadoop/目录下

cd hadoop-2.6.0/etc/hadoop/

1.hadoop-env.sh

在本文件中主要设置JAVA_HOME,将文件中export JAVA_HOME=${JAVA_HOME}部分的${JAVA_HOME}修改为Java的安装目录(/usr/java/jdk1.8.0_66)

export JAVA_HOME=/usr/java/jdk1.8.0_66

2.core-site.xml
在这个文件中主要配置NameNode的通信地址(fs.defaultFS)和hadoop运行时产生文件的存储路径(hadoop.tmp.dir)

<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://hadoop01:9000</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/home/hadoop/hadoop-2.6.0/tmp</value>
        </property>
</configuration>

3.hdfs-site.xml
在本文件中主要设置hdfs的副本数量,本例中我们搭建的是伪分布式,因而设置为1

<configuration>
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
</configuration>

4.mapred-site.xml
默认是没有这个文件的,但有一个模板文件mapred-site.xml.template,可执行mv mapred-site.xml.template mapred-site.xml。该文件中的配置用于通知框架MapReduce使用的YARN资源管理器

<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
</configuration>

5.yarn-site.xml
该文件中设置Reducer取数据的方式,这里是mapreduce_shuffl

<configuration>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>

这样我们就完成了Hadoop的配置,和Hadoop一样,为方便Hadoop命令的使用,也需要配置环境变量,可以在hadoop用户家目录的.bashrc或.bash_profile中进行配置,不过这里我们还是选择在/etc/profile中进行配置吧。这时需要执行exit切换回到root账号,将/etc/profile最后面的内容修改为:

export JAVA_HOME=/usr/java/jdk1.8.0_66
export HADOOP_HOME=/home/hadoop/hadoop-2.6.0
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

同样为何配置生效source一下该文件。

应用Hadoop

初次使用Hadoop时需要对NameNode进行格式化,只需执行如下命令

hdfs namenode -format

如果出现xxx has been successfully formatted.说明格式化成功

namenode格式化成功

此时还会发现hadoop-2.6.0下出现了一个tmp文件夹,接着启动HDFS和YARN,执行

start-dfs.sh
start-yarn.sh

注:如果前面在环境变量部分配置hadoop下的sbin目录,请切换到sbin目录执行相关命令(cd hadoop-2.6.0/sbin/),此时可使用jps命令查看运行的进程:

 jps命令执行结果

其中的NameNode和DataNode属于HDFS,ResourceManager和NodeManager属于YARN

在浏览器中输入http://192.168.1.110:50070/查看HDFS界面来进行进一步验证

Hadoop在浏览器端查看

输入http://192.168.1.110:8088/可查看YARN的管理界面

Hadoop的YARN管理界面

测试上传文件到HDFS

在hadoop用的家目录下执行

hadoop fs -put hadoop-2.6.0.tar.gz hdfs://hadoop01:9000/test

可将本地的文件上传到hdfs上,在http://192.168.1.110:50070/页面中可查看上传是否成功,可以看到文件已成功上传(也可在命令行中输入hadoop fs -ls /来进行查看)

HDFS查看文件系统

所上传的文件可以通过如下命令进行下载

hadoop fs -get hdfs://hadoop01:9000/test ./test_download

测试MapReduce和YARN
首先切换到mapreduce目下查看其中的jar包

cd hadoop-2.6.0/share/hadoop/mapreduce/

接着我们创建一个words文件用于进行wordcount测试:
vi words
hello tom
hello jerry
hello kitty
hello world
hello tom
将文件上传到hdfs上

hadoop fs -put words hdfs://hadoop01:9000/words

可使用hadoop fs -ls /进行验证
执行运算,结果输出到HDFS的output文件中

hadoop jar hadoop-mapreduce-examples-2.6.0.jar wordcount hdfs://hadoop01:9000/words hdfs://hadoop01:9000/output

计算完成在浏览器端会发现有output有两个文件:_SUCCESS和part-r-00000,查看part-r-00000,内容为
hello 5
jerry 1
kitty 1
tom 2
world 1
这里按照字母顺序列出各个单词出现的次数。

注:如需使用主机名在浏览器中访问需要在本机的host文件中进行配置,Mac在/private/etc/hosts中配置,Windows在C:\WINDOWS\system32\drivers\etc\hosts中配置

四、安装HBase

1.首先下载并解压缩HBase文件

wget http://apache.opencas.org/hbase/stable/hbase-1.1.2-bin.tar.gz
tar -xzvf hbase-1.1.2-bin.tar.gz
mv hbase-1.1.2 hbase

2.然后修改两个配置文件:
a.hbase-env.sh设置JAVA路径

vi hbase/conf/hbase-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_66

b.hbase-site.xml

vi hbase/conf/hbase-site.xml
   <property>
      <name>hbase.rootdir</name>
      <value>hdfs://hadoop01:9000/hbase</value>
   </property>
   <property>
      <name>hbase.zookeeper.property.dataDir</name>
      <value>/home/hadoop/zookeeper</value>
   </property>
#伪分布式
   <property>
      <name>hbase.cluster.distributed</name>
      <value>true</value>
   </property>

3.可将HBase的bin目录添加到.bash_profile中或者cd到hbase/bin目录下

启动hbase,执行hbase-start.sh,进入shell,执行hbase shell即可看到如下命令行窗口:

HBase Shell指令

此外在浏览器中输入http://hadoop01:16010/(如未绑定host可直接输入IP:http://192.168.1.110:16010/)也可验证HBase是否启动成功

HBase浏览器界面

五、安装Sqoop

1.首先下载并解压缩安装文件

wget http://apache.fayea.com/sqoop/1.4.6/sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
tar -xzvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha sqoop

2.配置sqoop-env.sh

cd sqoop/conf
mv sqoop-env-template.sh sqoop-env.sh
vi sqoop-env.sh
#修改对应内容如下
export HADOOP_COMMON_HOME=/home/hadoop/hadoop-2.6.0
export HADOOP_MAPRED_HOME=/home/hadoop/hadoop-2.6.0
export HBASE_HOME=/home/hadoop/hbase

3.安装mysql-connector-java

wget http://ftp.ntu.edu.tw/MySQL/Downloads/Connector-J/mysql-connector-java-5.1.36.tar.gz
tar -xzvf mysql-connector-java-5.1.36.tar.gz
mv mysql-connector-java-5.1.36/mysql-connector-java-5.1.36-bin.jar sqoop/lib/

4.测试连接MySQL并查看其中的数据库
cd 到sqoop/bin目录下或者把该目录添加到bash_profile等文件中,然后执行如下指令并输入数据库密码即可列出所有数据库名称

sqoop-list-databases --connect jdbc:mysql://localhost/ --username root -P

注:执行过程中可能会出现如下错误

Warning: /home/hadoop/sqoop/bin/../../hcatalog does not exist! HCatalog jobs will fail.
Please set $HCAT_HOME to the root of your HCatalog installation.
Warning: /home/hadoop/sqoop/bin/../../accumulo does not exist! Accumulo imports will fail.
Please set $ACCUMULO_HOME to the root of your Accumulo installation.

并不会影响执行结果,可在sqoop/bin目录下的configure-sqoop文件中注释相应部分报错就会消失
通过Sqoop连接MySQL数据库

Mac系统Eclipse快捷键大全

JAVA常用:

Cmd+Shift+F 代码格式调整

Cmd+Shift+O 库文件导入

一、Command

Command+1

快速修复

Command+d

删除当前行
Command+Option+ 复制当前行到下一行
Command+Option+ 复制当前行到上一行
Command+ 移动光标至当前行的行首
Command+ 移动光标至当前行的行尾

Command+t

快速显示当前类的结构

Command+w

关闭当前编辑页
Command+Option+ 前一个编辑的页面
Command+Option+ 后一个编辑的页面

Command+k

参考当前编辑页选中的关键字向下搜索

Command+e

显示当前编辑页面列表可选择页面进行切换

Command+/

注释或反注释当前行

Command+Shift+e

显示Editor管理器,可选择切换editor

Command+j

正向查找,在当前编辑页中查找录入的字符,注意Eclipse状态栏的提示

Command+Shift+J

反向查找,使用方式与正向查找类似

Command+Shift+W

关闭所有打开的Editor

Command+Shift+P

定位匹配符,适用于代码规模比较大的场景,如在while(){}循环体的末尾}处,想要跳转到while(){处。

Command+[

向后导航到上一个编辑的文件

Command+]

向前导航到下一个编辑的文件

二、Option

Option+ 向下移动当前行
Option+ 向上移动当前行
Option+回车 显示当前选择资源的属性

Option+/

代码助手“智能提示”

Option+Command+R

重命名

Option+Command+C

修改函数结构,适用重构

Option+Command+L

抽取本地变量

三、Control

Control+M

最大化或还原当前editorview

四、Shift

Shift+Command+ 选中光标至全部文本的开头
Shift+Command+ 选中光标至全部文本的结尾
Shift+Command+ 选中光标至当前行的结尾
Shift+Command+ 选中光标至当前行的开头

 

五、补充说明

Eclipse对于文本编辑跳转和选中跳转这块基本和Mac系统一致是通用的,以下内容是Mac系统对文本选中或中或跳转这块的支持。

1.文本位置跳转快捷键:

跳转到一行的开头: Command+左箭头
跳转到一行的末尾: Command+右箭头
跳转到当前单词的开头(适合英文、拼音): Option+左箭头
跳转到当前单词的末尾(适合英文、拼音): Option+右箭头
跳转到全部文本的开头: Command+上箭头
跳转到全部文本的末尾: Command+下箭头

2.文本选中快捷键

在以上快捷键中加入Shift,则可以扩展成为选中文本效果的快捷键

选中光标到本行开头的文本: Shift+Command+左箭头
选中光标到本行末尾的文本: Shift+Command+右箭头
选中光标到当前单词的开头(适合英文、拼音): Shift+Option+左箭头
选中光标到当前单词的末尾(适合英文、拼音): Shift+Option+右箭头
选中光标到全部文本的开头: Shift+Command+上箭头
选中光标到全部文本的末尾: Shift+Command+下箭头

3.vim中一些快捷键

Shift+4

行尾

Shift+6

行首

Shift+G

文档末尾

gg

文档头

六、Terminal光标相关

Ctrl+u

删除光标到行首的字符

Ctrl+k

删除光标到行尾的字符

Ctrl+h

删除一个字符(退格删除)

Ctrl+c

取消当前行输入的命令

Ctrl+a

光标移到行首

Ctrl+e

光标移动行尾

Ctrl+l

清屏(与clear类似)

Ctrl+p

调出命令历史中上一条(类似)

Ctrl+n

调出命令历史中下一条(类似)

Ctrl+w

删除当前光标前的一个单词

Ctrl+y

粘贴(Ctrl+w)删除的单词
Alt+ 单词间移动向左
Alt+ 单词间移动向右

Java关键字图表

Java关键字或保留字是Java编程语言中的50个预定义具有特殊意义的关键词,这些词不能用作定义变量名、方法名、类名或其它标识符。在IDE集成开发环境(Integrated Development Environment)中,这些关键字会以高亮或特殊颜色来区别显示。

Java关键字(保留字)

abstract
assert
boolean
break
byte
case
catch
char
class
const
continue default do double else
enum extends final finally float
for goto if implements import
instanceof int interface long native
new package private protected public
return strictfp short static super
switch synchronized this throw throws
transient try void volatile while

 

环境变量

JAVA_HOME    配置JDK安装路径

PATH    配置JDK命令文件的位置

CLASSPATH    配置类库文件的位置

Java中的保留字

Javak中的关键字

标识符可以由字母、数字、下划线(_)、美元符($)组成,但不能包含 @、%、空格等其它特殊字符,不能以数字开头。

Java数据类型

Java数据类型