一.安装hadoop
二.安装spark
三.CM安装CDH
4.rpm包下载
5.遇到未连接到Event Server和Host Monitor问题可以通过添加Cloudera Management Service解决
6、配置ntp1.更改/etc/sysconfig/ntpd内容为
OPTIONS="-g -x" #平滑同步
SYNC_HWCLOCK=yes #更改bios时间
7、httpd更改/var/www/html目录需要把/etc/httpd/conf/httpd.conf所有该值替换为自定义路径
8、禁用virbr0,需重启
9、手动安装完agent可以选管理主机,不选新建
10、启用oozie web console1.ext2.2可以去oozie官网下载
2.需要在cm oozie的配置中启用web console,需要重启oozie
11、在/etc/profile中追加export HADOOP_USER_NAME=hdfs,使spark
12、hadoop配置文件路径/etc/hadoop/conf
13、yarn结束spark任务:yarn application -kill ${application_id}
14.使用dbeaver ce版连接hive
15.sqoop连接数据库,需要将jdbc driver jar拷贝到/opt/cloudera/parcels/CDH/lib/sqoop/lib下
16.以hdfs用户登录hive可以规避hdfs文件夹权限问题
17.sqoop1.sqoop --query 后sql用双引号使用
\$CONDITIONS
,单引号使用$CONDITIONS
2.sqoop --options-file
文件格式为通换行替换空格
import
--connect
jdbc:mysql://${ip}:3306/${database}
--username
${username}
--password
${password}
--query
'${sql} where $CONDITIONS'
--split-by
${mysql_primary_key}
--hive-import
--create-hive-table
--hive-table
${database}.{table}
--null-string
'\\N'
--null-non-string
'\\N'
-m
${node_num}
--target-dir
${hdfs_not_exists_tmp_path}
18、hive使用spark进行计算
set hive.execution.engine=spark;
set spark.executor.cores=4;
set spark.executor.memory=2g;
19.impala不能查询orc表,比hive上运行spark快
20、cdh中hue集成mysql,在hue_safety_valve.ini中追加以下配置
[librdbms]
[[databases]]
[[[mysql]]]
nice_name="My SQL DB"
engine=mysql
host=${host}
port=3306
user=${user}
password=${password}
[desktop]
app_blacklist=
[notebook]
show_notebooks=true
[[[hive]]]
name=Hive
interface=hiveserver2
[[[impala]]]
name=Impala
interface=hiveserver2
[[[spark]]]
name=Scala
interface=livy
[[[pyspark]]]
name=PySpark
interface=livy
[[[r]]]
name=R
interface=livy
[[[jar]]]
name=Spark Submit Jar
interface=livy-batch
[[[py]]]
name=Spark Submit Python
interface=livy-batch
[[[text]]]
name=Text
interface=text
[[[markdown]]]
name=Markdown
interface=text
[[[mysql]]]
name = MySQL
interface=rdbms
[[[sqlite]]]
name = SQLite
interface=rdbms
[[[postgresql]]]
name = PostgreSQL
interface=rdbms
[[[oracle]]]
name = Oracle
interface=rdbms
[[[solr]]]
name = Solr SQL
interface=solr
[[[pig]]]
name=Pig
interface=oozie
[[[java]]]
name=Java
interface=oozie
[[[spark2]]]
name=Spark
interface=oozie
[[[mapreduce]]]
name=MapReduce
interface=oozie
[[[sqoop1]]]
name=Sqoop1
interface=oozie
[[[distcp]]]
name=Distcp
interface=oozie
[[[shell]]]
name=Shell
interface=oozie
21、hue中mysql查询不支持中文解决方法,更改文件/opt/cloudera/parcels/CDH-6.3.0-1.cdh6.3.0.p0.1279813/lib/hue/desktop/libs/librdbms/src/librdbms/server/mysql_lib.py
def execute_statement(self, statement):
cursor = self.connection.cursor()
cursor.execute('SET NAMES utf8;')
cursor.execute('SET CHARACTER SET utf8;')
cursor.execute('SET character_set_connection=utf8;')
cursor.execute(statement)
self.connection.commit()
def __init__(self, *args, **kwargs):
super(MySQLClient, self).__init__(*args, **kwargs)
self.connection = Database.connect(**self._conn_params)
self.connection.set_character_set('utf8')
22、更改hue和oozie时区
23、impala-shell需要连接到slave节点(使用-i参数,端口为21000),或者在slave节点运行
24、impala-shell -f
只能读取本地文件,可以将文件存储到hdfs,通过shell下载到执行impala的机器本地(windows上传linux注意文件格式)
FILE_NAME='test.sql'
DOWNLOAD_FILE_PATH='/tmp/'
export PYTHON_EGG_CACHE=./myeggs
hdfs dfs -copyToLocal ${HDFS_FILE_PATH}${FILE_NAME} ${DOWNLOAD_FILE_PATH}
impala-shell -f ${DOWNLOAD_FILE_PATH}${FILE_NAME}
rm -rf ${DOWNLOAD_FILE_PATH}${FILE_NAME}
25、可以通过yarn job的history查看错误日志
26、hue执行sqoop需要将mysql驱动上传到/user/oozie/share/lib/lib_20191017143957/sqoop/下并更改owner为oozie,执行时注意看stderr(oozie输出日志不详细,而且hue中sqoop命令与命令行有差异,建议都使用shell)
#hue sqoop
export --connect jdbc:mysql://X.X.X.X:3306/x?useSSL=false --username x --password x --table x --export-dir /user/hive/warehouse/x --input-fields-terminated-by "\01" -m 3 --input-null-string "\\N" --input-null-non-string "\\N"
#command line sqoop
sqoop export --connect jdbc:mysql://X.X.X.X:3306/x?useSSL=false --username x --password x --table x --export-dir /user/hive/warehouse/x --input-fields-terminated-by "\01" -m 3 --input-null-string "\\\\N" --input-null-non-string "\\\\N"
#sqoop import(如m指定2,则会插入2条相同数据)
export HADOOP_USER_NAME=hdfs
sqoop import --connect jdbc:mysql://X.X.X.X:3306/x --username x--password x--query "select * from t where \$CONDITIONS" --split-by x --hive-import --hive-table x.x --null-string "\\\\N" --null-non-string "\\\\N" -m 1 --target-dir /poc/tt_ro
27、hdfs开启HA后配置hue使用httpfs
28、关闭交换内存
29、hue连接hbase
30、机器时间不一致可以导致hbase启动失败
31、cdh安装phoenix
1、启动queryserver使用queryserver.py
2、hue中显示phoenix建表
3.异步索引表名需大写(phoenix bug)
4、启动命名空间
1、同时需更改phoenix的bin目录下的hbase-site.xml,如queryserver已启动需重启才能是hue中editor生效
2、如使用dbeaver,则需右键添加这2项值到连接属性
2、建立异步索引(未成功,创建时报ha无需指定端口错误)
1、先见hbase同名view或者table(drop时同时删除hbase内容)
2、创建索引CREATE INDEX x ON x.x(x.x) async
3、在phoenix安装机器配置/etc/profile,export HBASE_CLASSPATH_PREFIX=/mnt/software/phoenix/phoenix-5.0.0-alpha-HBase-2.0/commons-cli-1.4.jar
4、运行/opt/cloudera/parcels/CDH/bin/hbase org.apache.phoenix.mapreduce.index.IndexTool --schema x --index-table x --data-table x --output-path /x
1、第5步没找到(cdh文档也一般,还总404),可以参考
4、创建同步索引(10分钟1000万条)
1、在cdh
hbase-site.xml 的 HBase 服务高级配置代码段(安全阀)
和hbase-site.xml 的 HBase 客户端高级配置代码段(安全阀)
配置phoenix.query.timeoutMs
为36000000
2、同时更改phoenix的bin目录下的hbase-site.xml ,追加
<property>
<name>phoenix.query.timeoutMs</name>
<value>36000000</value>
</property>
1、索引创建后的插入的数据才会生效
2、solr中没有schema.xml更改managed-schema即可
3、field的required="true"
则新插入数据必须含有该字段才能被solr查询出来
4、更新配置
5、IKAnalyzer配置
6、solrctl collection和reload需要操作solr admin ui
7、可以在hue的索引中看到创建的索引和内容
8.dbeaver连接solr urljdbc:solr://x.x.x:2181/solr?collection=x
,sql中中文需转成utf8编码(如\u64cd
)
33、Livy
1、编译生成CDH parcel
2、CDH安装parcel
3、数据分析ETL KNIME
4、hue配置livy
5、curl访问livy
6、livy ui
7、很遗憾在cdh6.3上没能通过parcel形式安装成功,最后直接启动的livy官网zip包,配置的hue,无法通过cm管理1、cloudera版livy 0.2.0安装后无法使用,可能是版本不匹配;0.3.0编译失败,未深入解决编译问题;编译时最好都跳过test
2、knime版livy 0.5.0安装后无法启动,一直报livy-server找不到,export LIVY_HOME也不行,无法直接改cm启动livy shell,因为每次都生成新的,未深入研究源文件在哪(可以试下给/usr/lib/livy做个软链接到clouldera的livy下)
3、通过cm-livy-scripts编译github版livy,期间解决了N多编译问题。包括maven wget插件无法下载spark_hadoop包(在target下手动下载),python2.7 model缺失和版本问题(建议有条件的同学安装anaconda,在python3虚拟环境下编译)。最终安装后(安装时需要解决logs目录问题,会读取$LIVY_LOG_DIR环境变量)最新版和0.6.0在hue中使用时都报repl jar未找到,估计还是spark版本问题
1、elasticsearch watcher(收费)配置exchange邮件提醒
xpack.notification.email.account:
local:
profile: outlook
email_defaults:
from: ${邮箱}
smtp:
auth: true
host: ${exchange server}
port: 587
user: ${域\邮箱前缀}
starttls.enable: true
ssl.trust: "*"
secure_password需使用keystore工具add到文件,无需在elasticsearch.yml
配置
2、logstash intput中添加type字段,output中可使用if对type进行判断
input {
redis {
host => "127.0.0.1"
port => "6379"
db => "0"
password => "redis"
key => "local_test"
data_type => "list"
type => "local_test"
}
redis {
host => "127.0.0.1"
port => "6379"
db => "0"
password => "redis"
key => "heartbeat"
data_type => "list"
type => "heartbeat"
}
}
filter{
if [error]{
drop{}
}
}
output {
if [type] == "local_test" {
elasticsearch {
index => "local_test-%{+YYYY.MM.dd}"
hosts => "https://localhost:9200"
manage_template => false
user => logstash_writer
password => logstash_writer
ssl => true
cacert => "D:\\01_software\\logstash-7.8.0\\elasticsearch-ca.pem"
}
}
if [type] == "heartbeat"{
elasticsearch {
index => "heartbeat-%{+YYYY.MM.dd}"
hosts => "https://localhost:9200"
manage_template => false
user => logstash_writer
password => logstash_writer
ssl => true
cacert => "D:\\01_software\\logstash-7.8.0\\elasticsearch-ca.pem"
}
}
}
3、若果logstash设置了用户,添加新index注意维护权限
4、elastalert 更改rule yaml会立即生效,不用重启;启动命令python -m elastalert.elastalert
,yaml rule folder在config.xml中指定,可以添加--es_debug_trace log.log
查看查询es的请求,elastalert-test-rule
如果有匹配会打印匹配记录
5、kibana的Visualize组建可以更改后另存为